У меня есть TcpClient
, который я подключаю к машине, и все работает нормально. Теперь еще один шаг. Я хочу отслеживать состояние подключения в течение очень 60 секунд с помощью таймера. Согласно базовому исследованию темы, которую я узнал что нет прямого способа проверить это. Поэтому я попытался получить его по ответу на недавнее сообщение, отправленное на машину, когда приложение выходит из сети.
Вот код..
// 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();
}
Но самое удивительное, что происходит в этом случае, это то, что если машина находится вне сети, то и при записи в первый раз она может писать, и поэтому статус подключения приходит как подключенный, хотя он находится вне сети. .Второй раз, когда он пытается отправить данные, он терпит неудачу и, как и ожидаемый статус, отключен.
Основная проблема, с которой я сталкиваюсь, заключается в том, что после отключения от сети он может отправлять данные. Из-за этого я теряю все буферные данные, которые хранятся на машине к тому времени, когда сеть отключается. Помогите пожалуйста мне..