Как узнать какие порты открыты на локальном компьютере?

448
20 июня 2017, 22:36

Как узнать какие порты открыты на моем девайсе, программным методом C#

Answer 1

Способы проверки портов попытками коннекта могут быть ненадежными или занимать слишком много времени, особенно при проверке нескольких портов. К тому же, приложения могут слушать только определенные ip-адреса, и не слушать при этом 127.0.0.1, что приведет к негативному результату при попытке подключения.

В C# есть стандартный способ получения списка активных TCP Listners:

System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
    .GetActiveTcpListeners();

Работает достаточно быстро, результат можно отфильтровать по нужному порту / ip.

var isPortBusy = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
    .GetActiveTcpListeners().Any(l => l.Port == 80);
Answer 2

Как вариант прозвонить в диапазоне от IPEndPoint.MinPort до IPEndPoint.MaxPort. По идее, это займет очень много времени...

Функция проверки открыт ли порт:

public bool CheckIfPortIsOpen(int port)
{
    try
    {
        using (var tcpClient = new TcpClient())
        {
            tcpClient.Connect("127.0.0.1", port);
            return true;
        }
    }
    catch (SocketException)
    {
        return false;
    }
}

Советую обернуть метод в таску, ибо он может быть продолжительным.

READ ALSO
Контекстное меню в DataGrid - C#(WPF)

Контекстное меню в DataGrid - C#(WPF)

Пишу академическое десктоп приложение с базой данныхИз базы контент вывожу посредством DataGrid, которое находится в интерфейсе десктоп - клиенте

503
Отображение запроса в гриде

Отображение запроса в гриде

ЗдравствуйтеПоявилась проблема с отображением запроса в гриде

251
Электронная подпись XML

Электронная подпись XML

Не могу придти к общему пониманию механизмов подписи xml-документовБуду благодарен за помощь разобраться)

346
Как передать string в textbox?

Как передать string в textbox?

Доброго времени суток! Имеется POST запрос, в котором есть username=" + username + " password = " + password + "

217