2014-09-01 4 views
3

Мое приложение открывает NetworkStream и StreamWriter для отправки HL7-сообщений службе. Эта услуга получает сообщения HL7, и ВСЕГДА отправляет подтверждение. У меня возникла следующая проблема: после отправки HL7-сообщений (которые работают, я их протестировал), я пытаюсь использовать s StreamReader для получения подтверждения от службы, но это приводит к исключению аргумента «Поток данных не читается». Я отлаживал свой код и узнал, что соединение было закрыто после использования блока StreamWriter, и поэтому для StreamReader читать нечего.Подключение NetworkStream автоматически закрывается

Вот мой код:

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-сообщений?

+1

возможно дубликат [Есть ли способ, чтобы закрыть StreamWriter, не закрывая это BaseStream?] (Http://stackoverflow.com/questions/2666888/is-there-any-way-to-close-a -streamwriter-without-clos-its-basestream) –

+0

Это очень помогает, спасибо! –

ответ

4

Решено: StreamWriter внутри блока использования также закрыл базовый поток.

Решение: Сообщите Streamwriter, чтобы он остался открытым.

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

Wow большое спасибо, это была моя проблема! –

+1

Рад, что мои ошибки заставили кого-то еще избежать их. –

 Смежные вопросы

  • Нет связанных вопросов^_^