我有两个程序,一个用于发送UDP广播消息,另一个用于监听此广播。我的问题是,有时候当我发送广播时,接收方会收到两条消息。为什么会这样呢?
接收端代码:
接收端代码:
public class Receiver {
private readonly UdpClient udp = new UdpClient(15000);
private void StartListening()
{
this.udp.BeginReceive(Receive, new object());
}
private void Receive(IAsyncResult ar)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 15000);
byte[] bytes = udp.EndReceive(ar, ref ip);
string message = Encoding.ASCII.GetString(bytes);
StartListening();
}
}
发送者代码:
public class Sender {
public void Send() {
UdpClient client = new UdpClient();
IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 15000);
byte[] bytes = Encoding.ASCII.GetBytes("Foo");
client.Send(bytes, bytes.Length, ip);
client.Close();
}
}
IPEndPoint ip = new IPEndPoint (IPAddress.Any, 15000);
可以简写为IPEndPoint ip = null;
- 它不是一个结构体。在EndReceive()
方法中使用它是为了定义发送方。随意填充它可能会有点误导。 - maxp