コンソールアプリケーションで、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
まさかAsync_Send_Receive.ReceiveForm_CallBackメソッドがAsyncCallBackデリゲート型と一致しない…とかじゃないよね?
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
ツイート | ![]() |