暇人おやじの暇なつぶやき
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
■ソケットの相手が切断したを知るために
サーバー側で複数の接続を処理している場合、相手から切断されたらそのソケットを破棄して以後はそのソケットを処理しない様にしなければならない その為、相手(クライアント)からの切断要求をうけいれるようにしないとならない これには 「BeginDisconnect」 を使う そしてまたこれもcallback関数 http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket.begindisconnect.aspx を参考にどうにか実装 参考ページにはVBのサンプルがないので、c#のサンプルを改造して、どうにかうまくいったけど マイクロソフトのページって、サンプル自体もそのままじゃ動かないから、超大変でR てことでコードは次のような感じ client.BeginDisconnect(True, New AsyncCallback(AddressOf DisconnectCallback), client) このBeginDisconnect はクライアントの処理中に記載 んで、次のがcallback関数「DisconnectCallback」 Private Sub DisconnectCallback(ByVal ar As IAsyncResult) ' 切断要求の処理 ' Complete the disconnect request. Dim client As Socket = CType(ar.AsyncState, System.Net.Sockets.Socket) Console.WriteLine("Disconnect:" & client.RemoteEndPoint.ToString()) client.EndDisconnect(ar) ' Signal that the disconnect is complete. ' disconnectDone.Set() End Sub disconnectDoneというのはC#の記載で、どうもイベントの通知のようなのですが、これをVBでどのようにするか不明なので、コメントアウト とりあえずはこれで切断の要求に応えることは出来た PR |
カレンダー
カテゴリー
フリーエリア
最新CM
最新TB
ブログ内検索
|