У меня есть TcpClient
, который я подключаю к машине, и все работает нормально. Теперь один дополнительный шаг я хочу контролировать состояние соединения на 60 секунд с помощью таймера. основное исследование темы я узнал, что нет прямого способа ее протестировать. Поэтому я попытался получить ее по реакции последнего сообщения, отправленного на компьютер, когда приложение выходит из сети.Вопрос о статусе подключения TcpClient в сети Down
Вот код ..
// Find out whether the socket is connected to the remote host.
//Send a message to Machine
try
{
byte[] notify = Encoding.ASCII.GetBytes("Hello");
stream.Write(notify, 0, notify.Length);
}catch { }
//Check if it reached to machine or failed
bool getConnectionStatus = client.Connected;
if (getConnectionStatus == true)
{
//Do nothing
}
else
{
//Stop the thread
_shutdownEvent.WaitOne(0);
_thread.Abort();
//Start Again
_thread = new Thread(DoWork);
_thread.Start();
}
Но самое удивительное, что, что происходит в данном случае является то, что если машина находится вне сети, то и при записи в первый раз, он умеет писать и, следовательно, состояние соединения идет как подключенное, хотя оно выходит за пределы сети. Во второй раз, когда он пытается отправить данные, он терпит неудачу и как ожидаемое состояние отключено.
Основная проблема, с которой я столкнулся, заключается в том, что после того, как она отключена от сети, почему она может отправлять данные. От этого я теряю все данные буфера, которые хранятся в машине к тому времени, когда сеть идет выкл. Пожалуйста, помогите мне ..
Отправьте «PING», дождитесь «PONG» –
@AlexK. Мне жаль, что я не получил вас –