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
|
プログラミング道
|
プログラミング掲示板
分類:[.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も同じ物でした。