
【現状】
VC#でソケット通信のソフトを作成しています。
【問題】
クライアント―サーバ型のソケット通信をしようとしているのですが、切断後すぐに再接続できないという問題が生じております。
【調査結果】
調べたところ、TCP/IPの状態遷移でアクティブクローズ側がTIME_WAIT状態になることが分かっています。TIME_WAITの設定値には意味合いがあり、漂流中の重複パケットの問題を回避するためや最後のACK再送のためであることは理解しております。
【やりたいこと】
今回は基本的に1:1通信でルータを挟まずにやりとりするネットワークなので、TIME_WAITを0、もしくは数msecにしたいと考えています。
※ 同じIPアドレス、ポート番号で接続したい為(ポート固定での再接続)
【自分で出した解決案の一つ】
どうもサーバ(Listenする側)からアクティブクローズすると、TIME_WAITは生じるもののクライアントから接続要求を出すと同じポートからでももう一度接続できてしまうというのは判明したので、必ずサーバから切断要求を出す仕様にすればTIME_WAITが0になるように思われます。
ただし、なぜ再接続できるのかは不明のため、すっきりしない(&環境や設定が異なると再接続できない可能性あり)
【質問】
(1) クライアント側からアクティブクローズする場合に、TIME_WAIT状態を1秒未満に設定する方法はありますか?(VC#で)
(2) サーバからアクティブクローズした場合に、なぜ再接続できてしまうのでしょうか?
以上の2点の質問に、どうかご回答のほどよろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> どうもサーバ(Listenする側)からアクティブクローズすると、TIME_WAITは生じるもののクライアントから接続要求を出すと同じポートからでももう一度接続できてしまうというのは判
ちゃんと双方了解のもとで close() できなかったときのこと言ってるなら
int optval = 1;
if (setsockopt (s, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval))
しとけという話ではなくて?
この回答への補足
SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false);
SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
の両方を試しましたが、特に変化なしでした。
使い方がまずいのかと色々調べましたが、TIME_WAITとの関係性についてしっかりと記述しているサイトもなく、不明のままです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外出先からリモートデスクトッ...
-
ポリシー等で特定のサイトだけ...
-
VB2008 で外部のMySQLに接続で...
-
外部からultr@VNC接続できない
-
リモートデスクトップと動的IP...
-
TeraTermマクロでlistboxを使い...
-
サブドメイン取得後の設定について
-
リモートデスクトップがつなが...
-
FileZilla ClientというFTPソフ...
-
携帯電話からのアクセス解析
-
ニコニコ生放送がみれないorz
-
価格コムに接続できません。
-
サンダーバードメールが送受信...
-
VPN接続時のドメイン参加について
-
8000番や8080番のポー...
-
スイッチのポート番号について
-
PINGが通るのにネットワー...
-
パソコンの「ローカル」って、...
-
ポート80、443を開けろと言われ...
-
ftpサーバー 接続できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外出先からリモートデスクトッ...
-
ポリシー等で特定のサイトだけ...
-
VPN接続時のドメイン参加について
-
リモートデスクトップと動的IP...
-
価格コムに接続できません。
-
TERATERMだけSSH接続できない
-
サンダーバードメールが送受信...
-
sshでは接続できるのにsftpは接...
-
ログについて
-
社内LANからのFTPが繋がりません
-
VPN接続確立後、Pingが通らない
-
ネットワークの最大接続数
-
VB2008 で外部のMySQLに接続で...
-
リモートデスクトップができない件
-
リモートデスクトップ接続について
-
同ネットワーク内でIIS・FTPに...
-
macです。サーバに接続できません…
-
携帯電話からのアクセス解析
-
FireFoxを社内で使用する場合の...
-
PPPのデフォルトゲートウェイを...
おすすめ情報