В приложении C # я использую EasyModbus для подключения к удаленному серверу:
ModbusClient client = new ModbusClient()
{
IPAddress = "192.168.1.100",
Port = 502,
ConnectionTimeout = 200
}
try
{
client.Connect();
}
catch (EasyModbus.Exceptions.ConnectionException)
{
throw;
}
catch (System.Net.Sockets.SocketException)
{
throw;
}
, затем в других частях моего приложения я пытаюсь читать / писать, только если клиент все еще подключен:
if (client.Connected)
{
try
{
int[] readHoldingRegisters = client.ReadHoldingRegisters(1000, 10);
// do something
}
catch (Exception)
{
throw;
}
}
Если во время работы приложения я отключаю свой ноутбук от сети WiFi, свойство Connected
остается равным true
даже после долгого времени.Я получаю исключение «вне диапазона», когда пытаюсь прочитать регистры, но мне интересно, почему это свойство не превращается в false
сразу.По крайней мере, я ожидал бы исключение «тайм-аут», когда я пытался что-то читать / писать.
Есть ли лучший способ узнать, что сервер больше недоступен?