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