1

UDP ポートを 5000 から 50xx に反復したい

特定のポートがすでに開いているか、使用できるかどうかを確認するにはどうすればよいですか?

私はこのコードを使用しますが、常に false を返します:

public bool PortIsUsed(int myport)
{
   bool alreadyinuse = (from p in System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners() where p.Port == myport select p).Count() == 1;
   return alreadyinuse;
}
4

1 に答える 1

1

通常、UDP ポート番号などの共有リソースを尋ねるときは、「これは今すぐ利用できますか?」と尋ねます。生産的ではありません。別のアプリケーションが何かを変更して回答を無効にする可能性があるため、取得した回答は次のマイクロ秒で正しくない可能性があります。

できることは、OS に特定のポートでリッスンするように要求することです (リソースを「取得」します)。OS はyesと言うか、ここにハンドルなどがあります。またはnoと言うか、他のプロセスがその特定のポートを使用しています。いずれにせよ、確実に行動できる答えが得られます。(具体的には、答えがノーの場合は、別のポートを試してください。)

于 2012-08-01T03:09:35.120 に答える