• 締切済み

socketについて

こんにちわ ソケットプログラムで質問なのですが ソケット作成(listen状態)後selectで通信を待っています。 その後selectを抜けて(通信がきたはず?)その直後にあるacceptでプログラムがとまってしまいます。 selectでは上記で作成したソケットしか感知しないようになっています。 これはselectを抜けてacceptにいくまでに通信が切れてしまったのでしょうか? socket~bind~listen~select~accept               ↑このタイミングで通信が切れたのでしょうか?

みんなの回答

  • jintoku
  • ベストアンサー率30% (4/13)
回答No.3

listen()の後にaccept()です。 accept()にてクライアントの接続をサーバーは待ちます。 その後、select()を使用し、データの受信や送信の監視に入ります。 参考URLはなかなかいいですよ。

参考URL:
http://cai.int-univ.com/sugsi/Lecture/NetProg/index.html
すると、全ての回答が全文表示されます。
  • moritan2
  • ベストアンサー率25% (168/670)
回答No.2

selectの返り値でエラーが発生していないかチェックしていますか? また、新しい接続かの確認はしていますか? すでに接続が完了しているところから、何かパケットがきてもselectは終了しますけど、そのときは新しい接続がきているわけではないので、acceptは待ちに入りますよ。

すると、全ての回答が全文表示されます。
  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

「これはselectを抜けてacceptにいくまでに通信が切れてしまったのでしょうか?」だとしたら accept が失敗すると思います(すぐに切れないかもしれませんが)。 可能性が高いのはプログラミングのミスです。例えば、select を外して、listen してすぐに accept で待ってみるとどうなりますか?もしこれで OK なら select の間違いで、例えば、maxfd の値を +1 していないとか、がありそうな間違いです。

すると、全ての回答が全文表示されます。

関連するQ&A