UPD非同期での待ちうけ


ローカル  2006-02-02 23:11:55  No: 93950

コンソールアプリケーションで、UPDの非同期待ちうけを行いたいとサンプルを参考にしながら試行錯誤していますが、うまくいきません。
New AsyncCallback(AddressOf Async_Send_Receive.ReceiveFrom_Callback)
の部分でエラーになることは分かるのですが、どのように修正すればよいか
皆目検討がつきません。
やりたいことは「ローカルポートで11000/UDPで常時待ちうけ、受信したら何らかのメッセージを出して、また待ちうけを続ける」といったものです。
ご助言を頂けないでしょうか。

---------------
Module Module1
    Public allDone As New ManualResetEvent(False)
    Public Class StateObject
        ' Client  socket.
        Public workSocket As Socket = Nothing
        ' Size of receive buffer.
        Public Const BufferSize As Integer = 1024
        ' Receive buffer.
        Public buffer(BufferSize) As Byte
        ' Received data string.
        Public sb As New StringBuilder
    End Class 'StateObject
    Sub Main()
        Dim lipa As IPHostEntry = Dns.GetHostByName("localhost")
        Dim lep As New IPEndPoint(lipa.AddressList(0), 11000)
        Dim s As New Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
        Dim sender As New IPEndPoint(IPAddress.Any, 0)
        Dim tempRemoteEP As EndPoint = CType(sender, EndPoint)
        Try
            While True
                allDone.Reset()
                Dim so2 As New StateObject
                so2.workSocket = s
                Console.WriteLine("Attempting to Receive data from host.contoso.com")
                s.BeginReceiveFrom(so2.buffer, 0, StateObject.BufferSize, 0, tempRemoteEP, New AsyncCallback(AddressOf Async_Send_Receive.ReceiveFrom_Callback), so2)
                allDone.WaitOne()
            End While
        Catch e As Exception
            Console.WriteLine(e.ToString())
        End Try
    End Sub
End Module


ガッ  2006-02-03 02:23:58  No: 93951

まさかAsync_Send_Receive.ReceiveForm_CallBackメソッドがAsyncCallBackデリゲート型と一致しない…とかじゃないよね?


ローカル  2006-02-03 03:11:09  No: 93952

Async_Send_Receiveは次のようにしています。(サンプルの集合体)
VisualBasicを始めたばかりなので意味が理解できていません。
すみません。

Private Sub Async_Send_Receive(ByVal ar As System.IAsyncResult)
        Dim listener As Socket = CType(ar.AsyncState, Socket)
        Dim handler As Socket = listener.EndAccept(ar)
        Dim state As New StateObject
        state.workSocket = handler
        Console.WriteLine("CONNECT,CLOSE")
    End Sub


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加