Hallo,
ich suche schon die ganze Zeit aber finde keinen passenden Code oder Hinweis. Ich versuche mich an meinen ersten Server und beschäftige mich zum ersten mal mit übertragungsprotokolle und Co (wobei ich noch keinen wirklichen durchblick habe). Ich möchte gerne einen Server bastln der aktuell nur im LAN später auch per I-Net funktionieren soll.
Obwohl ich den Server bereits MulitClienttauglich (auf Localhost) gemacht habe, ist mir immer noch ein Schleier, wie man die eigene IP-Adresse ermitteln kann. Also einmal die im eigenen Netzwerk und die im I-Net.
Aktuell ermittle ich so die IP
IPAddress ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
Nu wollte ich den Nutzer mehr Infos bereit stellen und erhalte kryptische Adressen die ungefähr so aussehen
{fe8025ec:c29c:a303:908a%9}
{fe8034f5:12a7:c800:88b1%8}
Was ich nicht wirklich verstehe. Da Normal eine IP ja Beispielsweise so aussieht 123.123.23.12
Kann mir jemand vielleicht erklären, wie 1. eine normale IP ermitteln kann und 2. warum das ergebnis Momentan so aussieht?
Ach ja. Frohes Fest
Gruß dat Tala
Hallo!
@Taladan:
Das, was dort angegeben wird, sind die IPv6-Adressen. Diese bestehen aus 128 Bit (mein' ich zumindest), da die IPv4-Adressen in der von dir erwarteten Form bald nicht mehr ausreichen, um alle Geräte im Internet zu adressieren.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Um IPV4 zu kriegen habe ich wie unter gemacht.
public static string GetIPV4()
{
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
if (addr[i].AddressFamily == AddressFamily.InterNetwork)
{
return addr[i].ToString();
}
}
return "";
}
Jepp. Ermitteln kann ich die auch. Ich möchte aber eine automatische Ermittlung haben, die eine generelle Verwendung ermöglicht. Also nicht nur für Locale versuche sondern auch vor LAN und I-Net. Ich gene nicht davon aus, das die späteren Nutzer wissen, was sie eingeben müssen (obwohl ich Ihnen natürlch die möglichkeit lassen will).
Gruß dat Tala
Ich hab mal ne Erkennung für die externe Inet-IP gemacht, die auf 2 Internetseiten zurückgreift.
public FormGetIp()
{
InitializeComponent();
textBox1.Text = "0.0.0.0:1234";
Action ErrorCallback1 = () => GetIp("http://ip-address.domaintools.com/myip.xml", "<ip_address>", "</ip_address>", null);
GetIp("http://whatismyip.com/automation/n09230945.asp","\0","\0",ErrorCallback1);
}
private void GetIp(string url,string startMarker,string endMarker,Action errorCallback)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
new Thread(() =>
{
req.BeginGetResponse((o) =>
{
if (o.IsCompleted)
{
byte[] result;
try
{
WebResponse response = req.EndGetResponse(o);
int length = (int)response.ContentLength;
result = new byte[length];
response.GetResponseStream().Read(result, 0, length);
}
catch
{
if (errorCallback != null)
errorCallback();
return;
}
string text=Encoding.ASCII.GetString(result);
int start = text.IndexOf(startMarker);
if (start >= 0)
{
text = text.Substring(start + startMarker.Length);
}
int end = text.IndexOf(endMarker);
if (end >= 0)
{
text = text.Substring(0,end);
}
try
{
BeginInvoke((Action)(() =>
{
textBox1.Text = text + ":1234";
}));
}
catch { }
}
}, null);
}).Start();
}