gpt4 book ai didi

c# - 在 .NET 中发送和接收 UDP 数据包

转载 作者:行者123 更新时间:2023-11-30 17:17:13 25 4
gpt4 key购买 nike

我正在尝试在 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 个包。

提前致谢。

最佳答案

尝试使用异步方法,这样您就可以在不阻塞发送消息的情况下继续监听消息。

关于c# - 在 .NET 中发送和接收 UDP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6695669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com