[英]C# UDP socket app to listen to messages from various sockets
我有一個系統監視器應用程序,該應用程序需要偵聽另一台計算機上來自各種UDP套接字的消息。 其他套接字不斷向此給定IP /端口發送心跳。
調用BeginReceiveFrom時,拋出此異常:“由於未連接套接字,並且(未提供使用sendto調用在數據報套接字上發送時,未提供地址的)請求,因此不允許發送或接收數據的請求”
我不必致電connect,因為數據已經被發送到該ip端點。 加上數據來自各種套接字。
private Socket m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// bind socket
// Establish the local endpoint for the socket.
// Dns.GetHostName returns the name of the
// host running the application.
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
m_localEndPoint = new IPEndPoint(ipAddress, 19018);
m_socket.Bind(m_localEndPoint);
m_socket.BeginReceiveFrom(m_data,
m_nBytes,
MAX_READ_SIZE,
SocketFlags.None,
ref m_localEndPoint,
new AsyncCallback(OnReceive),
null);
}
private void OnReceive(IAsyncResult ar)
{
int nRead = m_socket.EndReceiveFrom(ar, ref m_localEndPoint);
}
我能夠通過UdpClient類獲得所需的行為。
您的問題是您綁定到分配給您的IP,因此您應該綁定到要從中接收的IP-在您的情況下:
m_socket.Bind(new IPEndPoint(IPAddress.Any, 12345));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.