Проверка открытых/закрытых портов - C#
Формулировка задачи:
Написал тестовую программe которая посматривает определенный порт, а потом выводи соответствующее сообщение.
Но, она работает не корректно:
- не могу понять почему не когда не вызывается else, сразу выпадает исключение, если порт закрыт.
- если закрыть 80 порт, то всегда выпадает исключение на все порты, хоть они и не были закрыты в ручную
Если есть предложения как исправить эти ошибки, то пишите!)
Вот код:
using System; using System.Net; using System.Net.Sockets; namespace test___1 { class Program { static void Main() { string hostName = "mail.yandex.ru"; int port = 1295; try { HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com"); HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse(); if (HttpStatusCode.OK == rspFP.StatusCode) { IPAddress[] IPa = Dns.GetHostAddresses(hostName); Socket checkerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { checkerSocket.Connect(IPa[0], port); if (checkerSocket.Connected == true) { checkerSocket.Close(); Console.WriteLine("Port " + port + " open"); } else { checkerSocket.Close(); Console.WriteLine("Port " + port + " closed"); } } catch(Exception ex) { Console.WriteLine(ex.Message); } } } catch (WebException e) { Console.WriteLine(e.Message); } Console.ReadLine(); } } }
неужели некто не знает?!
Решение задачи: «Проверка открытых/закрытых портов»
textual
Листинг программы
protected string GetCheckOpenPorts(int portNumber) { bool ipAvailable = true; IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners(); foreach (IPEndPoint andPoint in tcpConnInfoArray) { if (andPoint.Port == portNumber) { ipAvailable = false; break; } } if (ipAvailable == false) { return PortOpen(); } else { return PortCloseOrEstablished(); } } protected string PortOpen() { return "Port " + portNumber + " open for incoming connection(LISTENING)"; } protected string PortCloseOrEstablished() { return "Port " + portNumber + " busy or closed"; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д