【現状】
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で質問しましょう!
似たような質問が見つかりました
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- ルーター・ネットワーク機器 AU光10G回線について 6 2022/07/25 00:12
- FTTH・光回線 AU光回線の速度が出ません 2 2022/07/30 16:05
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- 通信機器・周辺機器 ネットワーク分割について 3 2022/10/24 09:23
- ルーター・ネットワーク機器 ひとつのスイッチでルーターの冗長化を複数させたい 1 2023/04/12 22:46
- 英語 be sorry for doingとbe sorry to have doneの意味の違いについて 2 2023/06/09 13:57
- ルーター・ネットワーク機器 10Gbpsの恩恵 5 2022/11/16 15:48
- VPN 無料のwifiはなぜ危険性高い? VPN プライベートDNSモードにすれば安全? 2 2022/06/04 18:23
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TERATERMだけSSH接続できない
-
特定の中国のサイトに日本から...
-
ポリシー等で特定のサイトだけ...
-
sshでは接続できるのにsftpは接...
-
DB接続文字列を外部ファイルに...
-
リモートデスクトップ接続のア...
-
FireFoxを社内で使用する場合の...
-
iphoneを遠隔操作したい
-
リモートデスクトップと動的IP...
-
サンダーバードメールが送受信...
-
windows98からwindows2000の共...
-
LAN接続HDDの増設部分のセキュ...
-
特定のクライアントPCからssh接...
-
CATVとネットワーク
-
LAN外からSSHでログインできない
-
サーバー(WinXP pro)にApacheと...
-
VPN接続の手段
-
Operaが繋がらない!助け...
-
openssh に ログインできない
-
FTPサーバに外部から接続で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ssh接続に伴うメッセージについて
-
ポリシー等で特定のサイトだけ...
-
TERATERMだけSSH接続できない
-
リモートデスクトップと動的IP...
-
VPN接続時のドメイン参加について
-
VPN接続確立後、Pingが通らない
-
ログについて
-
sshでは接続できるのにsftpは接...
-
iphoneを遠隔操作したい
-
Ruby on railsをrails sで立ち...
-
【ソケット通信】TIME_WAITを0...
-
VBからネットワーク接続の制御(...
-
リモートデスクトップができない件
-
TeraTermマクロでlistboxを使い...
-
掲示板を閲覧中のPCのIPアドレ...
-
CiscoルータへのTELNET接続がで...
-
リモートデスクトップ接続のア...
-
DDNSで更新失敗となる。
-
Wi-Fiに接続しているのにグルグ...
-
FTPサーバに外部から接続で...
おすすめ情報