【发布时间】:2014-03-27 18:53:31
【问题描述】:
我的代码有一个大问题。或与系统。这是 C# 中的客户端代码:
TcpClient client = new TcpClient("192.168.1.254", 19999);
NetworkStream nstream = client.GetStream();
Console.WriteLine("Connected.");
Stream stream = new FileStream("test.dat", FileMode.Create, FileAccess.Write);
int counter = 0;
byte[] buffer = new byte[1024];
while ((counter = nstream.Read(buffer, 0, 1024)) > 0)
{
stream.Write(buffer, 0, counter);
}
stream.Close();
nstream.Close();
client.Close();
Console.WriteLine("Done here.");
此应用程序与服务器一起使用,用 python 编写。这里没有火箭科学。客户端连接,服务器立即循环发送数据,直到结束,套接字关闭。问题是,在我的机器上,这个应用程序总是在 5 - 7 kB 之后停止接收数据。它停止并且(如调试器所示)挂起读取方法。这只发生在我的机器上(来自 MSDN 的 Windows 7 x64、visual studio 2013 express、.net 4.5.1)。也在我的机器上测试了这个应用程序,但在 Linux、mono 和其他一些 Windows 机器上。它在任何地方都有效,但遗憾的是不在这里。我想这是我的系统的问题,所以这是我目前尝试过的:
在没有调试器的情况下运行应用程序
重新安装 Visual Studio
重新安装 .NET 框架
关闭 Windows 防火墙和 AV
将目标框架更改为以前的版本(3、3.5)
很遗憾,无法重新安装操作系统。我必须在我的系统上完成这项工作,但我已经没有选择了。我什至不知道是什么导致了这个问题。我还能检查什么?
【问题讨论】:
-
我没有看到明显的代码问题,但有建议:尝试用
Stream.CopyTo()替换缓冲区和复制代码,看看是否还有问题。其他需要检查的事项 - AV 软件是否有干扰?连接断开还是仍在连接(netstat)? Wireshark 显示了关于连接情况的哪些信息?
标签: c# sockets networking networkstream