Привет!
Как вижу, вы пытаетесь сразу подключиться по TCP к указанному ip адресу.
Вариант1: Рекомендую проверить доступность данного хоста вообще ICMP запросом.
В ICMP ответе Вам прилетит статус ответа
Timeout или
Success (или что-то иное плохое), по нему и решайте доступен ли хост (хотя это не 100% гарантия. На устройстве может быть отключен ответ на ICMP запросы).
Рекомендую высылать более 1 ICMP пакета для проверки, т.к 1 может быть Timeout из-за того что устройство только проснулось например.
Можно воспользоваться стандартной библиотекой
System.Net.NetworkInformation и классом в нем
Ping
Вариант второй у меня есть библиотека в nuget
NetObserver которая делает такие запросы в классе
IcmpRequestSender без предварительного чтения мануала.
Вариант 2: Делаете подключение
TcpClient отдельным потоком. Вешаете туда флаг в код, после строчки коннекта. Если флаг не поднят например более 10 секунд, то гасите поток. Значит хост не доступен.
Для этого Вам вероятно нужно будет делает наблюдатель за открывающимися потоками, либо найти фрейморк который так работает.