簡體   English   中英

C#UDP套接字應用程序可偵聽來自各種套接字的消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM