gpt4 book ai didi

C# UDP Socket 需要时间将数据发送到未知 IP

转载 作者:行者123 更新时间:2023-12-03 12:01:35 31 4
gpt4 key购买 nike

我正在使用此代码将数据发送到 UDP 套接字

Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(obj.destAddress), obj.destPort);

byte[] buf = new byte[obj.length];
Array.Copy((byte[])obj.data, buf, obj.length);
int n = udpClient.SendTo(buf, ipEndPoint);
udpClient.Close();

当当前网络中存在 IP 时,此代码可以正常工作,但是当我将数据发送到未知 IP 地址时需要 3-5 秒。这会导致主应用程序挂起 3-5 秒.. 这个问题背后的原因可能是什么..

最佳答案

在知道 MAC 地址之前,您的 IP 堆栈无法发送 UDP 数据包。这是通过 ARP 协议(protocol)完成的。 IP 堆栈发送 ARP 查询并超时等待 ARP 响应。完成后,SendTo 返回。

当您向 Internet 发送 UDP 数据包时,需要网关的 MAC 地址。由于网关通常可用,因此不会出现超时,因为您的 IP 堆栈能够发送到网关,而与目的地是否可用无关。

您可以尝试设置一个套接字选项以异步操作。

关于C# UDP Socket 需要时间将数据发送到未知 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4568691/

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