VBでWinsockでTCPの通信プログラムを作っています。送受信共にWinsockコントロールを使っているのですが、切断直後は再接続が出来ません。Netstat で見ると、なにか残っています。原因を調べています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/01/13 21:27:45
  • 終了:--

回答(2件)

id:load No.1

load回答回数17ベストアンサー獲得回数02005/01/13 21:38:42

ポイント5pt

http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-4.h...

Programming UNIX Sockets in C - Frequently Asked Questions: $B%5!<%P%"%W%j%1!<%7%g%s$N:n@.(B (TCP/SOCK_STREAM)

SO_REUSEADDR オプションを使用しない場合、クローズ直後同一の四組(ローカルアドレス、ローカルポート、リモートアドレス、リモートポート)での通信はできません。

これはネットワーク内で遅延して送られたパケットを受信することを防ぐためです。

クライアント側のポート番号の変えて接続すれば大丈夫です。

id:yoshizo0807

VBのWinSockコントロールで、そのオプション使えるんでしょうか…それが問題。

2005/01/13 21:42:32
id:kuippa No.2

くいっぱ回答回数1030ベストアンサー獲得回数132005/01/13 21:48:28

ポイント45pt

winsockですが、windowsくんの仕様でどんどんとつぎのポートを使用していくようになっています。

なので、同じポートを連続的に使用したい場合は明示的に

sckListen.Close

sckListen.LocalPort = 0

ってな感じで使用したポートを必ず閉じて離す処理をいれる必要があります。(ちょっとうる覚え)

id:yoshizo0807

うまくいきました!有難うございます。

2005/01/13 22:06:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません