Как узнать какие порты открыты на моем девайсе, программным методом C#
Способы проверки портов попытками коннекта могут быть ненадежными или занимать слишком много времени, особенно при проверке нескольких портов. К тому же, приложения могут слушать только определенные 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);
Как вариант прозвонить в диапазоне от 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;
}
}
Советую обернуть метод в таску, ибо он может быть продолжительным.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники