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.

GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

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!