gpt4 book ai didi

c# - 使用udpclient在一个端口并发发送和接收数据

转载 作者:太空狗 更新时间:2023-10-29 22:53:57 26 4
gpt4 key购买 nike

我正在尝试通过本地端口 50177 向特定端点发送和接收数据。发送数据效果很好,但是当程序尝试接收数据时,它无法接收到任何数据。当我使用 Wireshark 嗅探网络时,我看到服务器向我发送了数据。我知道我不能在一个端口上同时拥有 2 个 UdpClient。

谁能帮帮我?

UdpClient udpClient2 = new UdpClient(50177);
IPEndPoint Ip2 = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 1005);
udpClient2.Send(peerto255, peerto255.Length, Ip2);

IPEndPoint Ip = new IPEndPoint(IPAddress.Parse("10.10.240.1"), 1005);
var dgram = udpClient2.Receive(ref Ip);

最佳答案

您绝对可以在一个端口上有两个 UdpClient,但您需要在将其绑定(bind)到端点之前设置套接字选项。

private static void SendAndReceive()
{
IPEndPoint ep1 = new IPEndPoint(IPAddress.Any, 1234);
ThreadPool.QueueUserWorkItem(delegate
{
UdpClient receiveClient = new UdpClient();
receiveClient.ExclusiveAddressUse = false;
receiveClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
receiveClient.Client.Bind(ep1);
byte[] buffer = receiveClient.Receive(ref ep1);
});

UdpClient sendClient = new UdpClient();
sendClient.ExclusiveAddressUse = false;
sendClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
IPEndPoint ep2 = new IPEndPoint(IPAddress.Parse("X.Y.Z.W"), 1234);
sendClient.Client.Bind(ep1);
sendClient.Send(new byte[] { ... }, sizeOfBuffer, ep2);
}

关于c# - 使用udpclient在一个端口并发发送和接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314168/

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