Проверка открытых/закрытых портов - 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";
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы