UDP "连接"-速度在c#

本文关键字:quot 速度 连接 UDP | 更新日期: 2023-09-27 18:18:32

我分析了一些样板UDP代码,速度非常适合只发送少量数据(这是我的意图)。

但是与"发送"方法相比,"连接"方法"非常慢"。这需要50 - 80毫秒:udpClient = new UdpClient();udpClient.Connect("HOSTNAME", 11000);

发送几乎没有1毫秒的时间,因为它是如此惊人的快:Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");

udpClient.Send(sendBytes, sendBytes.Length);

我想知道这个"连接"方法做什么,因为UDP是设计无连接的。

如果我不使用connect方法,那么每次调用时send会变慢:udpClient.Send(sendBytes, sendBytes.Length,"HOSTNAME",1100);

有机会提高"连接"速度吗?

免责声明:我知道UDP是不可靠的,但对于我的应用程序(客户端统计数据,无论如何不是100%准确),如果包的顺序错误,甚至一些丢失的包也不会杀了我。

UDP "连接"-速度在c#

udpClient。Connect设置默认主机名和端口,因此随后您可以调用Send而不指定它们。占用时间的是名称解析——将HOSTNAME转换为IPAddress。

如果你在连接中只做一次,你就不必每次发送时都这样做,这样会更快。

我得出了以下结论:

没有办法用c#使UDP更快。带有标准MSDN示例的UdpClient是最佳选择。

我找到了winsock核心API的包装器:http://www.elitepvpers.com/forum/co2-programming/159327-advanced-winsock-c.html

但是当你点击"连接"时(参见http://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx)速度与托管UdpClient大致相同。