Бвстрая проверка открыт ли порт на определенном IP - C#
Формулировка задачи:
Нужно проверить, открыт ли порт на определенном IP. Раньше делал через System.Net так :
Но дело в том, что таймаута для Connect() не предусмотрено, а мне он очень нужен, т.к. иногда порты бывают закрыты, и в этом случае поток висит ~20 секунд, а это гигантская задержка в рамках моей задачи.
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.ReceiveTimeout = 5; s.SendTimeout = 5; s.Connect(IPs[i], 3389);
Решение задачи: «Бвстрая проверка открыт ли порт на определенном IP»
textual
Листинг программы
static void Main(string[] args) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); int port = 1000; //example IPEndPoint point = new IPEndPoint(IPAddress.Parse("someaddress"), port); try { socket.Connect(point, TimeSpan.FromSeconds(5)); } catch (SocketException e) { if (e.ErrorCode == 10061) Console.WriteLine("Port is closed"); else if (e.ErrorCode == 10060) Console.WriteLine("TimeOut"); else Console.WriteLine(e.Message); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д