有没有办法提高TcpClient连接速度

时间:2012-01-31 10:45:14

标签: c# vb.net sockets tcpclient

我正在编写一个使用TCP连接到遗留应用程序的VB.NET应用程序。

通信工作正常并且连接后非常快,但即使我连接到本地计算机,当我创建新连接时总会有延迟(大约2.5-3.5秒):

Private _client As TcpClient
Public Property PortNumber As Int32 = 3338
Public Property ServerName As String = [Local machine name]

_client = New TcpClient(ServerName, PortNumber) ' <- takes some time to execute this line

有人可以建议对此有任何改进吗?

2 个答案:

答案 0 :(得分:4)

这可能是一个名称解析问题。如果您对应用程序的生命周期内与计算机名称对应的IP地址不会发生变化感到高兴,您可以先解决它并存储IP地址。

TcpClient执行此操作的方式是调用Dns.GetHostAddresses(hostname),然后从其获取的列表中选择合适的地址(例如,如果您使用的是IPv4套接字,则选择IPv4地址)。

以TcpClient的源代码为例 - 一旦获得了IP地址,就可以继续以相同的方式使用TcpClient。

TCP连接总是非常昂贵的创建(毫秒,而不是秒),因此如果您正在进行大量非常短暂的连接,TCP可能不是最佳选择。这就是为什么像NTP和DNS这样的协议通常是基于UDP的,以及人们为什么要尝试重用HTTP连接的原因。

答案 1 :(得分:0)

网络API中的TcpClient非常高。也许只有Socket类更高。我认为你不能提高这段代码的性能。这可能是一些网络延迟或DNS解析需要比平时更长的时间。请咨询您的网络管理员。