C# 有什么方法可以提高TCP客户端连接速度吗

C# 有什么方法可以提高TCP客户端连接速度吗,c#,vb.net,sockets,tcpclient,C#,Vb.net,Sockets,Tcpclient,我正在编写一个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(Ser

我正在编写一个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
Private\u客户端作为TcpClient
公共属性端口号为Int32=3338
公共属性ServerName作为字符串=[本地计算机名称]

_client=newtcpclient(ServerName,PortNumber)“可能是名称解析问题。如果您很高兴与计算机名对应的IP地址在应用程序的生命周期内不会更改,则可以首先解析它并存储IPAddress

TcpClient执行此操作的方法是调用
Dns.GetHostAddresses(hostname)
,然后从返回的列表中选择合适的地址(例如,如果您使用的是IPv4套接字,它会选择IPv4地址)

以TcpClient的源代码为例—获得IP地址后,您可以继续以相同的方式使用TcpClient


TCP连接的创建总是非常昂贵的(虽然是几毫秒,但不是几秒钟),因此如果要创建大量非常短的连接,TCP可能不是最佳选择。这就是为什么像NTP和DNS这样的协议通常都是基于UDP的,也是为什么人们试图为HTTP重用连接

这可能是名称解析问题。如果您很高兴与计算机名对应的IP地址在应用程序的生命周期内不会更改,则可以首先解析它并存储IPAddress

TcpClient执行此操作的方法是调用
Dns.GetHostAddresses(hostname)
,然后从返回的列表中选择合适的地址(例如,如果您使用的是IPv4套接字,它会选择IPv4地址)

以TcpClient的源代码为例—获得IP地址后,您可以继续以相同的方式使用TcpClient


TCP连接的创建总是非常昂贵的(虽然是几毫秒,但不是几秒钟),因此如果要创建大量非常短的连接,TCP可能不是最佳选择。这就是为什么像NTP和DNS这样的协议通常都是基于UDP的,也是为什么人们试图为HTTP重用连接

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

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

您的意思是低?TcpClient不会低于Socket类[TcpClient使用Socket]您的意思是低吗?TcpClient不会低于Socket类[TcpClient使用Socket]您的名称解析是正确的,但是奇怪的是,我自己如何使用
GetHostAddresses
比框架看起来要做的快得多。您正确的是名称解析,然而,奇怪的是,使用
GetHostAddresses
我自己能比框架看起来做得更快