Имам 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();
}
Но най-удивителното нещо, което се случва в този случай е, че ако машината е извън мрежата, тогава и докато пише за първи път, тя може да пише и затова състоянието на връзката идва като свързано, въпреки че е извън мрежата .Втори път, когато се опитва да изпрати данни, той е неуспешен и подобно на очакваното състояние е прекъснато.
Основният проблем, с който се сблъсквам, е, че след като е изключен от мрежата, защо може да изпраща данните. Поради това губя всички буферни данни, които се съхраняват в машината до момента, в който мрежата се изключи. Моля, помогни ми..