我正在制作一个TCP / IP客户端/服务器应用程序。该服务器用作运行SVM实验并将结果发送回单个客户端的计算单元。有几种这样的服务器(计算单元)-大约有70个。
每个服务器可以同时接受2个客户端,因为这足以使用所有可用的CPU和内存。对于客户端应用程序,只有一个实例,该实例使用所有服务器同时运行计算。因此,客户端同时连接到所有70个服务器,两次,两次,至少提供140个连接,因此提供140个TPL任务。在客户端中,与服务器的每个连接都在其自己的TPL任务内。
为什么TcpClient不会通过NetworkStream发送和/或接收数据?
我正在使用TcpClient发送一些数据。大小约为5MB。当我发送的数据量小于1MB时,数据将被接收。
如果我在本地计算机上运行客户端和服务器,则所有数据均已正确发送和接收-看来代码是正确的。但是,当我尝试在公司的Intranet上运行相同的客户端和服务器时,数据已发送但从未收到。网络管理员声称没有防火墙或协议分析。
每个客户端都在其自己的TPL任务内。我有多达8000个任务。这与问题有关系吗?
请注意,我已经尝试同时调用NetworkStream.FlushAsync()。Wait()并设置TcpClient.NoDelay = true。这些都不有助于解决问题。
TcpClient是否是管理至少140个并发连接的正确解决方案?