我遇到了一个奇怪的错误,我只尝试编写和读取流缓冲区,但是当尝试读取它时会引发SocketException。
这是我的代码:
// create tcp client
System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient("<localhost>", <port>);
client.ReceiveTimeout = 1; // timeout 1sec
// get stream that can be used for reading/writing
System.Net.Sockets.NetworkStream stream = client.GetStream();
// prepare the request message
String request ="My message";
byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(request);
stream.Write(requestBytes, 0, requestBytes.Length);
// get the response message
byte[] responseByteBuffer = new byte[1000];
int bytesRead = stream.Read(responseByteBuffer, 0, 1000); //Here raise SocketException
错误:
未处理的异常:System.IO.IOException:无法从中读取数据 传输连接:连接尝试失败,因为 连接方在一段时间后没有正确回应,或者 建立的连接失败,因为连接的主机失败了 响应。 ---&GT; System.Net.Sockets.SocketException:连接尝试 失败,因为关联方在a之后没有正确回应 一段时间,或建立的连接失败,因为连接 主持人没有回应 System.Net.Sockets.Socket.Receive(Byte []缓冲区,Int32偏移量,Int32 size,SocketFlags socketFlags)at System.Net.Sockets.NetworkStream.Read(Byte []缓冲区,Int32偏移量, Int32 size)---内部异常堆栈跟踪结束--- at System.Net.Sockets.NetworkStream.Read(Byte []缓冲区,Int32偏移量, Int32尺寸)
但奇怪的是,Windows 7上具有相同网络环境的相同代码工作正常。但是当我尝试在Windows 10中运行该工具时崩溃...不可用
我尝试了很多东西:增加接收和读取超时,关闭防火墙但行为相同。我也使用Visual Studio 2015中的网络跟踪,但是同样的错误并没有给我提示...