NetworkStream.Read 不抛出异常
NetworkStream.Read throws no exception
我无法将此示例发送到 运行:
https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient%28v=vs.110%29.aspx
我对他们的代码所做的唯一更改是将所有内容都放在 main 方法中,当然还有我的端口名称。我可以连接到我的服务器,甚至可以发送数据。但是在线
Int32 bytes = networkStream.Read(data, 0, data.Length);
程序停止 运行ning 无异常。微软自己的代码怎么行不通?我的服务器还没有发送任何东西,但我认为这不重要吗? (虽然它收到完美。)我读过一些你不能在其他线程中看到异常的东西,但我没有。
我也试过这个线程:
没用。我 运行 赢了 7 thoguh。但我希望它能以全新的方式工作 windows.
NetworkStream.Read
阻塞直到数据可用、连接关闭(在这种情况下它将 return 0
)或发生异常。它就是这样设计的。
如果您的服务器将发送数据,您的客户端程序将继续并能够处理响应。
NetworkStream.Read() 是一个同步调用,它会等到收到响应。要读取不同长度的数据,您可以执行以下操作。
注意:我假设服务器只发送一个请求响应。
private string GetResponse(string command)
{
//Send request
TcpClient client = new TcpClient(HOST, PORT);
Byte[] data = Encoding.ASCII.GetBytes(command);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
//Read response
data = new Byte[BUFFER_SIZE];
String response = String.Empty;
stream.ReadTimeout = READ_TIMEOUT;
while (!response.EndsWith(RESPONSE_END))
{
int bytes = stream.Read(data, 0, data.Length);
response += Encoding.ASCII.GetString(data, 0, bytes);
}
response = response.Remove(response.Length - RESPONSE_END.Length);
stream.Close();
client.Close();
//Return
return response;
}
我无法将此示例发送到 运行: https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient%28v=vs.110%29.aspx
我对他们的代码所做的唯一更改是将所有内容都放在 main 方法中,当然还有我的端口名称。我可以连接到我的服务器,甚至可以发送数据。但是在线
Int32 bytes = networkStream.Read(data, 0, data.Length);
程序停止 运行ning 无异常。微软自己的代码怎么行不通?我的服务器还没有发送任何东西,但我认为这不重要吗? (虽然它收到完美。)我读过一些你不能在其他线程中看到异常的东西,但我没有。
我也试过这个线程:
没用。我 运行 赢了 7 thoguh。但我希望它能以全新的方式工作 windows.
NetworkStream.Read
阻塞直到数据可用、连接关闭(在这种情况下它将 return 0
)或发生异常。它就是这样设计的。
如果您的服务器将发送数据,您的客户端程序将继续并能够处理响应。
NetworkStream.Read() 是一个同步调用,它会等到收到响应。要读取不同长度的数据,您可以执行以下操作。
注意:我假设服务器只发送一个请求响应。
private string GetResponse(string command)
{
//Send request
TcpClient client = new TcpClient(HOST, PORT);
Byte[] data = Encoding.ASCII.GetBytes(command);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
//Read response
data = new Byte[BUFFER_SIZE];
String response = String.Empty;
stream.ReadTimeout = READ_TIMEOUT;
while (!response.EndsWith(RESPONSE_END))
{
int bytes = stream.Read(data, 0, data.Length);
response += Encoding.ASCII.GetString(data, 0, bytes);
}
response = response.Remove(response.Length - RESPONSE_END.Length);
stream.Close();
client.Close();
//Return
return response;
}