我分析了一些样板UDP代码,对于只发送少量数据(这就是我的意图)来说,速度非常好。
但是与"send“方法相比,"connect”方法“非常慢”。这需要50 - 80毫秒:udpClient = new UdpClient(); udpClient.Connect("HOSTNAME", 11000);
发送几乎不需要1ms的时间,因为它的速度太快了:Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
udpClient.Send(sendBytes, sendBytes.Length);
我想知道这个"connect“方法是做什么的,因为UDP在设计上是无连接的。
如果我省略了connect方法,那么每次调用发送都会慢一些:udpClient.Send(sendBytes, sendBytes.Length,"HOSTNAME",1100);
有没有可能提高“连接”的速度?
免责声明:我知道UDP是不可靠的,但对于我的应用程序(客户端统计数据,无论如何都不是100%准确的),即使软件包顺序错误,甚至一些丢失的软件包也不会杀死我,这都无关紧要。
发布于 2011-12-20 05:01:12
udpClient.Connect设置默认的主机名和端口,因此随后您可以调用Send而无需指定它们。花费时间的是名称解析-将主机名转换为IPAddress。
如果您在Connect中执行一次,则不必每次发送时都执行此操作,这样会更快。
发布于 2011-12-22 03:19:33
我的结论如下:
使用C#无法使UDP更快。具有标准MSDN样本的UdpClient是最佳选择。
但是当你点击“连接”(参见http://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx )时,速度与托管UdpClient的速度大致相同。
https://stackoverflow.com/questions/8567392
复制相似问题