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消息后发送回的确认?

NetworkStream的连接将自动关闭

已解决:using块内的StreamWriter也关闭了基本Stream。

解决方案:告诉Streamwriter保持连接打开。

public StreamWriter(
    Stream stream,
    Encoding encoding,
    int bufferSize,
    bool leaveOpen
)