c铉検査ポートが占有されているかどうかの簡単な例
Tcp/Ip Server connectionを作成するには、1000から65535までの範囲のポートが必要です。
しかし、本機の一つのポートは一つのプログラムのモニターしかないので、現地のモニターを行う時、ポートが占有されているかどうかを検査する必要があります。
名前空間System.Net.Network InformationでIPGlobal Propertiesというクラスを定義しました。このクラスを使ってすべての傍受接続を取得し、ポートが占有されているかどうかを判断します。コードは以下の通りです。
しかし、本機の一つのポートは一つのプログラムのモニターしかないので、現地のモニターを行う時、ポートが占有されているかどうかを検査する必要があります。
名前空間System.Net.Network InformationでIPGlobal Propertiesというクラスを定義しました。このクラスを使ってすべての傍受接続を取得し、ポートが占有されているかどうかを判断します。コードは以下の通りです。
public static bool PortInUse(int port)
{
bool inUse = false;
IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();
foreach (IPEndPoint endPoint in ipEndPoints)
{
if (endPoint.Port == port)
{
inUse = true;
break;
}
}
return inUse;
}
私達はHttpListner類を使って8080ポートでモニターを起動して、テストして検出できるかどうか、コードは以下の通りです。
static void Main(string[] args)
{
HttpListener httpListner = new HttpListener();
httpListner.Prefixes.Add("http://*:8080/");
httpListner.Start();
Console.WriteLine("Port: 8080 status: " + (PortInUse(8080) ? "in use" : "not in use"));
Console.ReadKey();
httpListner.Close();
}