Sockets 每当您想要发送请求时,打开TCP套接字对性能的影响有多大?

Sockets 每当您想要发送请求时,打开TCP套接字对性能的影响有多大?,sockets,kotlin,tcp,Sockets,Kotlin,Tcp,我想问的是,每当您要发送请求时,打开TCP套接字val socket:socket(“198.51.100.1”,9999)总是会对程序/应用程序的性能产生多大影响?我正在开发一个应用程序,它总是使用协程打开一个新的套接字,然而,问题是在终端设备上,端口从53000(或类似的数字)开始,所以每个套接字的端口都会很快填满 我在问,这将如何影响性能?谢谢。由于防拥塞算法,TCP的初始化速度非常慢。您关心的不应该是端口(除非您发出大量请求并泄漏连接),而是初始化时间。如果您可以使用keepalive套

我想问的是,每当您要发送请求时,打开TCP套接字
val socket:socket(“198.51.100.1”,9999)
总是会对程序/应用程序的性能产生多大影响?我正在开发一个应用程序,它总是使用协程打开一个新的套接字,然而,问题是在终端设备上,端口从53000(或类似的数字)开始,所以每个套接字的端口都会很快填满


我在问,这将如何影响性能?谢谢。

由于防拥塞算法,TCP的初始化速度非常慢。您关心的不应该是端口(除非您发出大量请求并泄漏连接),而是初始化时间。如果您可以使用keepalive套接字,那就更好了。

谢谢您的回答。使用辅助线程()创建套接字,然后将该套接字提供给协程是否可行?它可行吗?另外,你能提供一些资源吗?谢谢如果您正在寻找解决延迟问题的方法,只需在后台启动连接即可。然后,您可以继续处理内容,当您准备好使用连接时,您可以调用以获取连接的结果(实际上应该是一对(ByteSendChannel、ByteReadChannel)或类似的内容),然后执行您的工作,在完成时关闭连接。我没有感觉到任何延迟。我已经使用了协同程序,我需要创建另一个吗?您询问了使用新线程的问题,所以我认为您希望缓解性能问题。这两种解决方案是:1)提前初始化套接字,以便在需要时准备就绪;2)使用UDP,因为UDP没有抗拥塞延迟。我说的是新线程,因为在Android中无法在主线程上联网。