人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: yoshizo0807
●カテゴリ:コンピュータ
✍キーワード:netstat TCP VB コントロール プログラム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● load
●5ポイント

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

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

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

◎質問者からの返答

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


2 ● くいっぱ
●45ポイント

http://homepage1.nifty.com/MADIA/vb/vb_bbs/200303_03030007.html

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

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

sckListen.Close

sckListen.LocalPort = 0

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ