UDP绑定方法

use*_*993 5 c# multithreading udp

我正在尝试在两台计算机之间建立UDP通信链接.一台计算机正在运行客户端应用程序,另一台正在运行服 客户端应用程序给出错误:

在执行此操作之前,必须调用Bind方法.

以下是我在下面的客户端的代码,我已经评论了错误发生的位置:

 public delegate void ShowMessage(string message);
    UdpClient udpClient = new UdpClient();
    Int32 port = 11000;
    public ShowMessage myDelegate;
    Thread thread;


private void Form1_Load(object sender, EventArgs e)
    {
        thread = new Thread(new ThreadStart(ReceiveMessage));
        thread.IsBackground = true;
        thread.Start();
    }


    private void ReceiveMessage()
    {
        while (true)
        {
            IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, port);

            //Error on this line
            byte[] content = udpClient.Receive(ref remoteIPEndPoint);

            if (content.Length > 0)
            {
                string message = Encoding.ASCII.GetString(content);


                this.Invoke(myDelegate, new object[] { message });
            }

        }

    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

来源 - > http://lamahashim.blogspot.com/2009/06/using-c-udpclient-send-and-receive.html

Adi*_*ter 7

我相信你需要先调用Bind侦听服务器:

udpServer.Client.Bind(new IPEndPoint(IPAddress.Any, 11000));
Run Code Online (Sandbox Code Playgroud)

  • 当 ExclusiveAddressUse 属性需要设置时,这很有用。 (2认同)

Sim*_*sey 7

您需要告诉udpclient要侦听的端口.传递receive方法的IPEndpoint可以设置为您喜欢的任何内容,因为它会填充发件人详细信息.它不会指示udpclient监听端口11000.实际上你正在尝试监听端口0,它指示udpclient选择它自己的端口.

看看http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive.aspx

您将看到使用要侦听的端口调用构造函数.