c# - NetworkStream 连接自动关闭

标签 c# tcpclient streamreader streamwriter networkstream

我的应用程序打开一个 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 消息后发回的确认信息?

最佳答案

已解决: using block 内的 StreamWriter 也关闭了基础 Stream。

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

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

关于c# - NetworkStream 连接自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604447/

相关文章:

objective-c - 写入后 NSOutputStream 因访问错误而崩溃(Objective-c)

c# - 如何强制 FileStream 文件的独占所有权

c# - 创建引用第 3 方 DLL 的独立 C# 可执行文件?

javascript - Retyped.chartist 用法不清楚。如何创建基本折线图?

c# - 使用数据源将数据绑定(bind)到列表框

接收TCP数据流的C程序

c# - 模拟事件处理器

c# - 在 .net 4 下开发具有同步和异步功能的 TCP 客户端,该客户端还监听服务器发起的通知

c# - 在 C# 中读取大日志文件

c# - 使用 EndOfStream 属性后的 StreamReader.BaseStream 问题