【问题标题】:Connection of NetworkStream is closed automaticallyNetworkStream 的连接自动关闭
【发布时间】:2014-10-25 14:24:48
【问题描述】:

我的应用程序打开一个 NetworkStream 和一个 StreamWriter 以将 HL7 消息发送到服务。 该服务接收 HL7 消息并始终发回确认。我有以下问题:发送 HL7 消息(有效,我对其进行了测试)后,我尝试使用 s StreamReader 从服务接收确认,但这会导致参数异常“数据流不可读”。我调试了我的代码,发现在 StreamWriter 的 using-block 之后连接已关闭,因此 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 消息后发回的确认?

【问题讨论】:

标签: c# tcpclient streamreader streamwriter networkstream


【解决方案1】:

已解决: using 块中的 StreamWriter 也关闭了基础 Stream。

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

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

【讨论】:

  • 很高兴我的错误让别人避免了。
猜你喜欢
  • 2012-02-21
  • 2018-11-15
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2021-12-16
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多