我正在尝试在两台计算机之间建立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 });
}
}
}
任何帮助将不胜感激。
来源-> http://lamahashim.blogspot.com/2009/06/using-c-udpclient-send-and-receive.html
最佳答案
您需要告诉udpclient监听哪个端口。可以将您传递给receive方法的IPEndpoint设置为您喜欢的任何内容,因为它会填充有发送者详细信息。它不会指示udpclient监听端口11000。实际上,您正在尝试监听端口0,该端口指示udpclient选择它自己的端口。
看看http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive.aspx
您将看到构造函数通过端口进行监听。