I use spider and Ethernet J11d, when I disconnect the LAN cable I get eh CableConnectivity change event, so does happen when I reconnect. the problem is that a socket network which I accept through still return 10050 error which means network is down, only if I wait a little bit then it works fine.
my question is how can I detect this? when should I start running again the socket. accept after reconnecting?
can I get this info via socket/ ethernet built in?
@ Devloper123 -
Can you please show your code?
If the DHCP client gets the same IP, would the NetworkAddressChanged event still be fired?
hi,
I am using Static IP.
this is similar to my code:
private void CableConnectivityChanged(object sender, EthernetBuiltIn.CableConnectivityEventArgs e)
{
if (_ethernet.IsCableConnected)
{
_autoResetEvent.Set();
}
Debug.Print("Built-in Ethernet Cable is " + (_ethernet.IsCableConnected ? "Connected!" : "Disconneced!"));
}
public void Start()
{
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, port);
socket.Bind(localEndPoint);
socket.Listen(Int32.MaxValue);
new Thread(StartServerInternal).Start();
}
private void StartServerInternal()
{
while (true)
{
try{
// Wait for a request from a client.
Socket clientSocket = socket.Accept();
// Process the client request.
var request = new ProcessClientRequest(this, clientSocket);
request.Process();
}
catch(SocketException e)
{
_autoResetEvent.WaitOne();
}
}
}
when reconnecting the autoResetEvnt in set and hte socket.Accept is called and throws a socket exception with error code 10050- network is down, while if I wait with a debugger a few seconds and then run the accept line is passes successfully.