Повторное открытие закрытого NetworkStream? - PullRequest
2 голосов
/ 11 августа 2009

Доброе утро,

Мне нужен какой-то совет, я использую networkStream, который транслируется из TcpClient, все работало нормально, но затем мне потребовалась некоторая функциональность в другом месте, которая требует закрытия потока. Кажется, я не могу найти способ повторно открыть соединение после его закрытия. Может ли кто-нибудь указать мне правильное направление здесь?

Вот пример кода, на котором я основан: (Очевидно, это не совсем так, как он работает, но я максимально упростил его: -))

private void MyMainFunction()
  {
  ConnectToTcp();

  if(CheckConnection == true)
    {
    DoWorkWithTcp();
    }

  DisconnectFromTcp();

  ConnectViaOtherSource();
  DoOtherSourceWork();
  DisconnectOtherSource();

  ConnectToTcp(); //Excecption thrown, epic fail!
  }

private void ConnectToTcp()
  {
  myClient = new TcpClient(ip, port);
  myNetStream = myClient.GetStream();
  }

private void DisconnectFromTcp()
  {
  myNetStream.Close();
  myClient.Close();
  }

Заранее спасибо, оценили.

Редактировать - Изменено название изменяемой орфографии! Ой!

Редактировать - Извините, только что понял, что проблема исходит из другого места, спасибо за подтверждение, что этот код правильный :-) Помог мне найти проблему из другого источника

Ответы [ 2 ]

1 голос
/ 11 августа 2009

Возникает вопрос: зачем вообще закрывать соединение, нельзя ли держать его открытым (неактивным) во время DoOtherSourceWork ()?

Кроме того, код выглядит нормально, создается новый TcpClient и т. Д., Поэтому я думаю, что это зависит от другой стороны - что делает одноранговое программное обеспечение, когда вы закрываете соединение?

1 голос
/ 11 августа 2009

Не уверен, так как вы не вставили все это, но

myClient = новый TcpClient (ip, порт); myNetStream = sockClient.GetStream ();

sockClient - это не myClient, это опечатка или она в коде? если это так, вам нужно пересоздать sockClient aswell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...