我有一个Java服务器应用程序和一个WPF(C#)客户端通过TCP相互通信。服务器应用程序使用Apache Mina。客户端应用程序使用TCPClient,如下所示:
TcpClient tcp = new TcpClient(host, port);
NetworkStream stream = tcp.GetStream();
StreamWriter writer = new StreamWriter(stream);
...
writer.WriteLine(data);
writer.Flush();
在我尝试从客户端向服务器发送大量数据(文件内容)之前,一切都是梦想。如果客户端和服务器都在我的本地计算机上运行,那么一切工作正常且速度很快(传输1 MB数据大约需要25 ms)。
澄清:由于缓冲区大小限制,刷新的最大数据量为64 KB。我将数据分成不大于64 KB的块。
当我与本地客户端和远程服务器(在我们的公司网络中)尝试完全相同的事情时,问题就开始了。在这种情况下,对writer.Flush()的单次调用需要13个SECONDS(与本地方案中的1 ms相比),这非常慢。
只有在从客户端向服务器发送大量数据时才会出现问题(尽管不大于64 KB,因此不会那么大)。小块没有问题,另一种方式(服务器到客户端)即使有大量数据也没有问题,因此网络本身不应成为问题。
有人可以帮忙吗?我不知道; - )
我尝试了以下内容:
没有任何帮助。