忍者ブログ
暇人おやじの暇なつぶやき
[72] [71] [70] [69] [68] [67] [66] [65] [64] [63] [62]
×

[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


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
フリーエリア
最新CM
最新TB
プロフィール
HN:
忍者 シオ才
性別:
非公開
バーコード
ブログ内検索