c# でリッスン状態のTCP/IPポートを確認する方法について説明します。
IPGlobalProperties クラスと IPEndPointクラスを使用します。
以下のコードでは、portNo
変数に指定したポート番号「8080」が、TCP/IPリスナーで使用されているかチェックします。
//using System.Net.NetworkInformation;
//using System.Net;
int portNo = 8080;
IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners();
foreach (IPEndPoint endpoint in tcpConnInfoArray)
{
if (endpoint.Port == portNo)
{
//ポート使用中
}
}
IPEndPoint
クラスには、アドレスやポート番号といったプロパティが定義されています。
以下のように書くと、現在使用中のアドレスとポート番号を表示します。
//using System.Net.NetworkInformation;
//using System.Net;
IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners();
foreach (IPEndPoint endpoint in tcpConnInfoArray)
{
Console.WriteLine(${endpoint.Address}:{endpoint.Port});
}
- 実行例
0.0.0.0:21
0.0.0.0:80
0.0.0.0:135
0.0.0.0:445
0.0.0.0:5040
0.0.0.0:49664
0.0.0.0:49665
0.0.0.0:49666
0.0.0.0:49667
0.0.0.0:49668
0.0.0.0:49669
0.0.0.0:49670
127.0.0.1:2323
127.0.0.1:60183
127.0.0.1:60206
127.0.0.1:60207
192.168.2.111:139
:::21
:::80
:::135
:::445
:::49664
:::49665
:::49666
:::49667
:::49668
:::49669
:::49670
ちなみに、アクティブなUDPリスナーを参照するには、GetActiveUdpListeners()
を使用します。
//using System.Net.NetworkInformation;
//using System.Net;
IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveUdpListeners();
foreach (IPEndPoint endpoint in tcpConnInfoArray)
{
Console.WriteLine(${endpoint.Address}:{endpoint.Port});
}
- 実行例
0.0.0.0:5050
0.0.0.0:5353
0.0.0.0:5353
0.0.0.0:5353
0.0.0.0:5355
127.0.0.1:1900
127.0.0.1:49664
127.0.0.1:63487
127.0.0.1:63488
127.0.0.1:63684
127.0.0.1:63685
127.0.0.1:64536
127.0.0.1:64612
127.0.0.1:64613
127.0.0.1:64850
127.0.0.1:64851
192.168.2.111:137
192.168.2.111:138
192.168.2.111:1900
192.168.2.111:64535
:::5353
:::5353
:::5355
::1:1900
::1:64534
fe80::c567:d05e:b3fa:a62e%4:1900
fe80::c567:d05e:b3fa:a62e%4:64533
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント