C# 4.0 C StreamWriter.Flush()到本地服务器需要1毫秒,但到远程服务器需要13秒(!)

C# 4.0 C StreamWriter.Flush()到本地服务器需要1毫秒,但到远程服务器需要13秒(!),c#-4.0,network-programming,streamwriter,C# 4.0,Network Programming,Streamwriter,我有一个Java服务器应用程序和一个WPF C客户机通过TCP相互通信。服务器应用程序使用ApacheMina。客户端应用程序使用TCPClient的方式如下: TcpClient tcp = new TcpClient(host, port); NetworkStream stream = tcp.GetStream(); StreamWriter writer = new StreamWriter(stream); ... writer.WriteLine(data); writer.Flu

我有一个Java服务器应用程序和一个WPF C客户机通过TCP相互通信。服务器应用程序使用ApacheMina。客户端应用程序使用TCPClient的方式如下:

TcpClient tcp = new TcpClient(host, port);
NetworkStream stream = tcp.GetStream();
StreamWriter writer = new StreamWriter(stream);
...
writer.WriteLine(data);
writer.Flush();
在我尝试将一个文件的大量数据内容从客户端发送到服务器之前,一切都是在做梦。如果客户机和服务器都在我的本地机器上运行,一切正常,快速传输1MB数据大约需要25毫秒

说明:由于缓冲区大小的限制,刷新的最大数据量为64 KB。我将数据分成不大于64 KB的块

当我在公司网络中对本地客户端和远程服务器尝试完全相同的方法时,问题就开始了。在这种情况下,对writer.Flush的单个调用需要13秒,而在本地场景中则需要1毫秒,这是非常缓慢的

只有当从客户机向服务器发送大量数据时才会出现问题,尽管数据大小不超过64 KB,所以也没有那么大。小数据块没有问题,从服务器到客户端的另一种方式也没有问题,即使数据量很大,因此网络本身也不应该是问题

有人能帮忙吗?我不知道-

我尝试了以下方法:

使用不同的缓冲区大小进行游戏 关闭两侧的防火墙
没有任何帮助。

网络速度可能很糟糕。但是如果你不测量网络速度,你就无法确定网络速度减慢的原因。@Will:你能推荐一种简单的方法来安装一个工具吗?要在这种情况下测量网络速度,请使用LAN速度测试工具测试网络速度。结果:网络速度相当快,所以这不是问题所在。查看病毒扫描程序,根据经验,这会显著降低流量,因为它会开始检查其认为可疑的流量。或者,尝试网络上的另一台PC作为服务器或客户端,或者更好的做法是,尝试第二台PC,并使用迷你集线器或交换机连接这两台PC。如果效果良好,则在公司网络上尝试。基本上,我建议您继续尝试不同的场景,直到您添加了导致问题的那一部分。@Igor:Thx,病毒扫描程序是个好主意,我将对此进行检查。