\

c# でリスニング状態のポートを確認する方法

c# でリッスン状態のTCP/IPポートを確認する方法について説明します。

ipad-820272_640.jpg

IPGlobalProperties クラスと IPEndPointクラスを使用します。

IPGlobalProperties Class

IPEndPoint Class

以下のコードでは、portNo変数に指定したポート番号「8080」が、TCP/IPリスナーで使用されているかチェックします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//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クラスには、アドレスやポート番号といったプロパティが定義されています。

以下のように書くと、現在使用中のアドレスとポート番号を表示します。

1
2
3
4
5
6
7
8
9
10
//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}");
}

- 実行例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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()を使用します。

1
2
3
4
5
6
7
8
9
10
//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}");
}

- 実行例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱