我正在尝试在 LAN 上测试 UDP 通信。我有一小段代码,我试图在两台计算机上运行它(一台应该等待接收,另一台应该发送)。奇怪的是,计算机 A 发送而 B 正确接收,但是如果我尝试 A 接收和 B 发送它就不起作用。你知道为什么会这样吗?
public void SendBroadcast(int port, string message)
{
UdpClient client = new UdpClient();
byte[] packet = Encoding.ASCII.GetBytes(message);
try
{
client.Send(packet, packet.Length, IPAddress.Broadcast.ToString(), port);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Receive(int port)
{
UdpClient client = null;
try
{
client = new UdpClient(port);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
IPEndPoint server = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
try
{
byte[] packet = client.Receive(ref server);
Console.WriteLine("{0}, {1}", server, Encoding.ASCII.GetString(packet));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
和电话:
SendBroadcast(444, "hello"); Receive(444);
如果我在同一台计算机上运行该程序的 2 个实例,它可以正常工作,但每次调用会创建 3 个包。
提前致谢。