Wie können Sie die IP-Adresse des Servers (PC, zu dem Sie eine Verbindung herstellen möchten) dynamisch abrufen?In C#, wie löse ich die IP-Adresse eines Hosts?
Antwort
System.Dns.GetHostEntry kann verwendet werden, um einen Namen in eine IP-Adresse aufzulösen.
Sie möchten ein nslookup machen.
Hier ist ein Beispiel:
http://www.c-sharpcorner.com/UploadFile/DougBell/NSLookUpDB00112052005013753AM/NSLookUpDB001.aspx
IPHostEntry Host = Dns.GetHostEntry(DNSNameString);
DoSomethingWith(Host.AddressList);
Danke Jungs für Ihre Hilfe, aber ich möchte die IP-Adresse des Besuchers nicht der PC im arbeiten –
Erm. Mein Beispiel hat nichts mit Ihrem PC zu tun. DNSNameString ist der Name des Servers, mit dem Sie eine Verbindung herstellen, dh die ursprüngliche Frage wird beantwortet. Ich weiß nicht, woher das, was du über die IP-Adresse eines Besuchers sagst, stammt oder was es mit der Frage zu tun hat. – chaos
Basierend auf Ihren Kommentar zu Chaos Antwort, die Sie nicht die IP-Adresse eines Servers wollen, möchten Sie die IP-Adresse eines Clients. Wenn das der Fall ist, repariere deine Frage ... und deine Antwort wäre HttpRequest.UserHostAddress.
Wenn Sie die Unten-Methode verwenden, können Sie richtig Als Beispiel
public static bool GetResolvedConnecionIPAddress(string serverNameOrURL, out IPAddress resolvedIPAddress)
{
bool isResolved = false;
IPHostEntry hostEntry = null;
IPAddress resolvIP = null;
try
{
if (!IPAddress.TryParse(serverNameOrURL, out resolvIP))
{
hostEntry = Dns.GetHostEntry(serverNameOrURL);
if (hostEntry != null && hostEntry.AddressList != null && hostEntry.AddressList.Length > 0)
{
if (hostEntry.AddressList.Length == 1)
{
resolvIP = hostEntry.AddressList[0];
isResolved = true;
}
else
{
foreach (IPAddress var in hostEntry.AddressList)
{
if (var.AddressFamily == AddressFamily.InterNetwork)
{
resolvIP = var;
isResolved = true;
break;
}
}
}
}
}
else
{
isResolved = true;
}
}
catch (Exception ex)
{
}
finally
{
resolvedIPAddress = resolvIP;
}
return isResolved;
}
lösen, Ping.Send erfordert eine IP-Adresse, so dass für Validierungscode „Server am Leben ist“ braucht es Übersetzung. –