NetworkStream的连接将自动关闭
本文关键字:连接 NetworkStream | 更新日期: 2023-09-27 18:20:09
我的应用程序打开NetworkStream和StreamWriter,向服务发送HL7消息。该服务接收HL7消息,并始终发回确认。我有以下问题:在发送HL7消息(有效,我测试了它)后,我试图使用StreamReader从服务接收确认,但这导致了一个参数异常"数据流不可读"。我对代码进行了调试,发现在StreamWriter的使用块之后连接被关闭,因此StreamReader没有任何可读取的内容。
这是我的代码:
public static void SendMessage(string message, string ip, int port)
{
string acknowledge;
try
{
using (TcpClient client = new TcpClient(ip, port))
{
using (NetworkStream networkStream = client.GetStream())
{
using (StreamWriter clientStreamWriter = new StreamWriter(networkStream))
{
clientStreamWriter.Write(message);
}
using (StreamReader clientStreamReader = new StreamReader(networkStream))
{
acknowledge = clientStreamReader.ReadToEnd();
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Connection Problems: " + ex.ToString());
}
}
我如何才能阻止连接关闭,因为我想读取客户端在收到HL7消息后发送回的确认?
已解决:using块内的StreamWriter也关闭了基本Stream。
解决方案:告诉Streamwriter保持连接打开。
public StreamWriter(
Stream stream,
Encoding encoding,
int bufferSize,
bool leaveOpen
)