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

本文关键字:连接 速度 TcpClient 有没有 | 更新日期: 2023-09-27 18:21:55

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

通信工作正常,连接后非常快速,但当我创建新连接时,即使我正在连接到本地机器,也总是会有延迟(约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

有人能对此提出改进建议吗?

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

这可能是名称解析问题。如果您对计算机名称对应的IP地址在应用程序的生存期内不会更改感到满意,可以先解析并存储IPAddress。

TcpClient这样做的方法是调用Dns.GetHostAddresses(hostname),然后从它返回的列表中选择一个合适的地址(例如,如果你使用IPv4套接字,它会选择一个IPv4地址)。

举个例子,看看TcpClient的来源——一旦你获得了IP地址,你就可以继续以同样的方式使用TcpClient。

TCP连接的创建成本总是很高的(不过是几毫秒,而不是几秒钟),所以如果你正在进行大量非常短暂的连接,TCP可能不是最好的选择。这就是为什么像NTP和DNS这样的协议通常是基于UDP的,也是为什么人们试图为HTTP重用连接。

TcpClient在网络API中的地位相当高。也许只有Socket类更高。我不认为您可以提高这段代码的性能。这可能是一些网络延迟,或者DNS解析需要比平时更长的时间。请与网络管理员联系。