- ベストアンサー
WinSockでのソケット通信
早速質問ですが、 今、クライアントからの要求をサーバに投げ、 ページ事のデータをサーバから取得し、 クライアントに表示する。と言うシステムを作成中ですが、 1ページ目の処理中に次の要求を行なうと、 (一度目のrecv()を追い越して二回目のsend()を行なう?) ポートを掴んだままになってしまい処理の続行が出来なくなってしまっています。 色々調べましたが、非ブロッキングには設定していない(ioctlsocket関数をコールしていない) と思われます。 このような状況についてご存知の方がいらっしゃったら、是非お力をお貸し下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
jun_j 様 問題となっているプログラムが掲載されていないため、 問題点を指摘することは出来ません。 以下は、アドバイスです。参考になればと思います。 1.ソケット作成時に、setsockopt関数で、SO_REUSEADDRを使用してみては いかがでしょうか? 2.ポートを指定しないでソケットを作成し、サーバーに接続すると、 Windowsが自動的に空いたポートを使用します。 同じソケットハンドルを使用すれば、もちろん受信も出来ます。 その場合、サーバー側では、recvfrom関数で、どのポートを使用したか 確認し、そのポートにデータを送信します。 これにより、ポートの取り合いにはならないと思います。 なお、クライアント側では、getsockname関数で、使用している ポート番号を取得することができます。
補足
すみません。 なんとか自己解決を目指します。