Laden...

Eigene IP ermitteln

Erstellt von Taladan vor 14 Jahren Letzter Beitrag vor 14 Jahren 11.825 Views
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 14 Jahren
Eigene IP ermitteln

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}
{fe80
34f5: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

1.820 Beiträge seit 2005
vor 14 Jahren

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 🙁

R
100 Beiträge seit 2009
vor 14 Jahren

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 "";
        }
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 14 Jahren

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

1.130 Beiträge seit 2007
vor 14 Jahren

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();
        }

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!