我的应用程序打开一个NetworkStream和一个StreamWriter,将HL7消息发送到服务。该服务接收HL7消息,并总是返回一个确认。我有以下问题:在发送hl7消息(这是有效的,我进行了测试)之后,我尝试使用s StreamReader接收来自服务的确认,但是这会导致一个参数异常“datastream是不可读的”。我在代码中进行了调试,发现连接是在StreamWriter的the块之后关闭的,因此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消息后发送回来的确认信息?
发布于 2014-09-01 11:38:20
解决: StreamWriter内部的使用块也关闭了基本流。
解决方案:告诉Streamwriter让连接保持打开。
public StreamWriter(
Stream stream,
Encoding encoding,
int bufferSize,
bool leaveOpen
)https://stackoverflow.com/questions/25604447
复制相似问题