Feedback

C# - Die öffentliche IP vom Provider abfragen

Veröffentlicht von am 02.02.2017
(0 Bewertungen)
Die eigene öffentliche IP abfragen und als Array ausgeben.(evtl. Mehrere IP's wegen Proxys, X-Forwarding...)

Mit verschiedenen Services Nutzbar, je nach Bedarf einfach die URL anpassen.

using System;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;

static string[] GetOwnIP()
{
	WebRequest req = WebRequest.Create("http://www.myip.is");
	WebResponse res = req.GetResponse();
	Stream s = res.GetResponseStream();
	StreamReader sr = new StreamReader(s);
	string streamTxt = sr.ReadToEnd();
	res.Close();
	Regex rx = new Regex(@"(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b"); 
	MatchCollection mc = rx.Matches(streamTxt);
	string[] retStr = new string[mc.Count];
	for(int i = 0; i < mc.Count; i++)
	{
		retStr[i] = mc[i].Value.ToString();
	}
	return retStr;
}
Abgelegt unter IP, ip, öffentlicheip, Regex.

2 Kommentare zum Snippet

Koopakiller schrieb am 05.02.2017:
Interessante Idee, aber nicht mehr Zeitgemäß.

Erstmal...
myip.is zeigt mir nur meine DS-Lite IPv4 an, eigentlich habe ich aber auch eine vollwertige IPv6, was schon zu einigen Problemen führte, weil ich das anfangs auch nicht wusste. Von daher ist die Seite für Benutzer wie mich nur bedingt verwendbar.
Im Internet findet man einige Seiten[1] die sogar nur die IP zurück geben. Was sicher praktischer wäre.

Und da sind wir auch schon beim zweiten...
Mittlerweile gibt es auch einige IPv6 Anschlüsse und das berücksichtigt dein Regex nicht.

So oder so würde ich an deiner Stelle die IPAddress-Klasse als Rückgabe-Typ verwenden.

[1] Beispielsweise: http://icanhazip.com/
Chillchef schrieb am 14.02.2017:
Hey!
Danke für den Tip!
Hab auch schon daran gedacht, nur war für mein Projekt eine String-Ausgabe völlig ausreichend. Ist ja kein Problem, das individuell für sich anzupassen.
Ging mir ja auch eher um das Grundprinzip.
Bei Gelegenheit werde ich das nochmal nachbessern, falls niemand schneller ist ;)
 

Logge dich ein, um hier zu kommentieren!