0

次の問題があります。関数を介してソケットをボンしようとしsocket.Bind()ます。しかし、それは常に吐きます。から内部IPを取得するためだと思います

IPHostEntry ipHe = Dns.GetHostEntry(Dns.GetHostName());

関数。この問題は私の静的 IP が原因だと思います。Ipconfig /allは、私の IP が のよう109.90.xxx.xxxであり、プログラムが取得する IPが であることを示してい192.168.xxx.xxxます。

それがスローするエラーは、「要求されたアドレスはそのコンテキストでは無効です」です

4

2 に答える 2

0

ホストに関連付けられているIPアドレスが複数ある可能性があります。返されたIPアドレスのリストをループしてみてください。

foreach (IPAddress ip in ipHe.AddressList)
{
    Console.WriteLine("    {0}", ip);
}
于 2012-12-05T14:58:21.853 に答える
0

Dns.GetHostEntryは DNS を照会するため、そこで間違っている可能性があります。コマンド プロンプトから、何がnslookup {your hostname}返されますか?

基本的に、DNS とローカル マシンのずれを止めるものは何もありません。これは意図的なものであるか、問題を示している可能性があり、ローカル ネットワークの要件と構成によって異なります。

DNS とは別にローカル IP アドレスを取得するには、インターフェイスに直接クエリを実行する必要があります。 を参照してSystem.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()、それぞれを列挙して呼び出すとGetIPProperties()、マルチキャスト IP アドレスとユニキャスト IP アドレスの両方が返されます。

于 2012-12-05T14:58:51.383 に答える