2009-08-11 9 views
2

Доброго утра,Повторное открытие закрытого NetworkStream?

Я нуждается в некоторых советах, я использую 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(); 
    } 

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

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

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

+1

какое исключение выбрасывается при попытке повторно подключиться? – Marcom

+0

ObjectDisposedException, но я их воссоздаю? – ThePower

+0

Можете ли вы создать короткую, но полную программу, которая демонстрирует проблему? То есть. что мы можем вставить полностью в консольный файл Program.cs, компилировать и запустить? –

ответ

1

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

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

1

Не уверен, что с тех пор, которого не вставить все вещь, но

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

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

+0

К сожалению, это была моя ошибка! хорошее место! – ThePower

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