DOBON.NET DOBON.NETプログラミング掲示板過去ログ

非同期ソケットで不要なソケットが生じる

  • 題名: 非同期ソケットで不要なソケットが生じる
  • 著者: LostWay
  • 日時: 2004/01/17 0:25:26
  • ID: 2172
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
環境/言語:[WinXP VS.net 2003]
分類:[.NET]

非同期でリスナーソケットを作成しています。
受け入れは1個に限定する為にバックログ1にしアクセプトするとすぐさまリッスンしていたソケットをクローズする様なコードを書いています。
処が、リッスンソケットを消そうとしても残ってしまいます。アクセプトされた実際にリモートと接続しているソケットをクローズするとリッスンソケットもクロースします。
この様な動作は正常でしょうか? 接続後に不要なリッスンしていたソケットを消すにはどうすれば良いでしょうかご教授お願いします。

netstat で確認
アクセプトし新しいソケットで接続確立した状態(ポート21のソケットが2個有る)
Local Remote State    sockHandle
127.0.0.1:21 0.0.0.0:0 Listning 3684
127.0.0.1:21 127.0.0.1.1127 Established 3528
127.0.0.1:1127 127.0.0.1:21 Established

ListningSocketをCloseしても変わらず127.0.0.1:21---0.0.0.0:0 が残る。

WorkSocketをcloseすると

127.0.0.1:21  127.0.0.1.1127 Time_Wate

となり、納得できる形で終了する。

コードのアウトライン
ListeningSocket.Listen(1)
ListeningSocket.BeginAccept(AddressOf AcceptCallback, ListeningSocket)
AcceptingSocket = CType(ar.AsyncState, Socket)
workSocket = AcceptingSocket.EndAccept(ar)
ListeningSocket.Close()


workSocket.Shutdown(SocketShutdown.Send)
workSocket.Close()
参考 ListeningSocketもAcceptingSocketも同じ物でした。

DOBON.NET | プログラミング道 | プログラミング掲示板