WAN ohne Website abfragen?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    WAN ohne Website abfragen?

    Guten Tag,

    Ich wollte mal allgemein fragen, ob man die externe IP (WAN) auch ohne das Nutzen einer Website schaffen kann, bzw. wie?

    Ich finde in der SuFu endlos viele Themen wo man es mit einer Website macht. Da ich nun aber ein fast fertiges Tool fertig habe, das möglichst ohne diese Notwendigkeit funktionieren soll wäre es nämlich gut zu wissen.

    Bisher sieht das Ganze noch so aus;

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class WANuIP
    3. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    4. Dim IPADDR As System.Net.IPAddress
    5. IPADDR = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList(0)
    6. TextBox1.Text = (IPADDR.ToString())
    7. Dim wc As New WebClient
    8. TextBox2.Text = (wc.DownloadString("http://icanhazip.com/"))
    9. End Sub
    10. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    11. Me.Close()
    12. End Sub
    13. End Class


    Bin gerade da echt am Überlegen wie ich an die WAN komme.

    Bin da ein wenig ratlos ^^'

    *Topic verschoben*
    Ja... Es ist schrecklich... Und wie es erst aussieht... jaaaaa...
    Aber immerhin funktioniert der Code... Vorerst...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Die WAN-Adresse wird vom Provider vergeben und dem Router mitgeteilt.
    Wenn du Zugriff auf den Router hast, kannst du sie eventuell auch dort auslesen.
    Der lokale Rechner kennt diese Adresse nicht (es sei denn er ist auch gleichzeitig der Router).
    Das einfachste ist deshalb wirklich, einen WebServer zu fragen, was er sieht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Alles klar.
    Bedeutet also, wenn ich es als universelles "Tool" programmieren wollte, wäre es wirklich eine harte Nuss?
    irgendwie kann ich mich nicht mit dem Gedanken anfreunden, dass ich bei der WAN an Websites gebunden sind, die irgendwann nicht mehr da sind und dann das Fragen los geht, warum das Teil nicht mehr in der Lage ist die WAN auszulesen^^

    Denke ich werde dann (notgedrungen) bei der "Website Methode" bleiben.
    Ja... Es ist schrecklich... Und wie es erst aussieht... jaaaaa...
    Aber immerhin funktioniert der Code... Vorerst...
    Sofern der Router keine API offenlegt, bei der man das Abfragen kann, wirst du immer ins Internet müssen.

    Ich bin gerade mal die Source von @BornToBeRoots hervorragendem NETWorkManager durchgegangen, da hier ebenfalls diese Funktionalität gegeben ist, und auch hier wird eine API einer Webseite abgefragt:
    github.com/BornToBeRoot/NETwor…ashboardViewModel.cs#L778
    Alles klar, danke :)

    Dann brauche ich mich da wohl erst einmal nicht weiter aufhalten :)
    Ja... Es ist schrecklich... Und wie es erst aussieht... jaaaaa...
    Aber immerhin funktioniert der Code... Vorerst...
    Hi,

    evtl. um deinem "Problem" aus dem Weg zu gehen, mehrere Webseiten benutzen, da es zumindest unwahrscheinlich ist, das z.B. 5 verschiedene Seiten alle plötzlich nicht mehr erreichbar sind.


    LG
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    @EaranMaleasi Das ist ja ein heftig Code.
    @SithLady Dieses Snippet hat bis jetzt noch immer funktioniert:
    Spoiler anzeigen

    C#-Quellcode

    1. /// <summary>
    2. /// Öffentliche IP auslesen
    3. /// </summary>
    4. /// <returns>IP-Adresse</returns>
    5. private IPAddress GetMyIP()
    6. {
    7. lock (MainForm.o)
    8. {
    9. try
    10. {
    11. HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("http://bot.whatismyipaddress.com/");
    12. using (HttpWebResponse resp = (HttpWebResponse)Req.GetResponse())
    13. {
    14. using (StreamReader sp = new StreamReader(resp.GetResponseStream()))
    15. {
    16. string ip = sp.ReadToEnd();
    17. return IPAddress.Parse(ip);
    18. }
    19. }
    20. }
    21. catch
    22. {
    23. return this.LastIp;
    24. }
    25. }
    26. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Jou

    @SithLady und wer noch so darüberstolpert:
    Um das Thema abzuschließen, die externe IP muss immer von einem externen Dienst abgefragt werden. Welcher Dienst das nun ist, ist dabei egal. Und ob man das nun mit 3 Zeilen macht, wie es der NETWorkManager macht, oder aber mit 5 oder mehr so wie @RodFromGermany ist dabei dir überlassen. Natürlich kann man das auch via HttpClient machen. Wie immer in der Programmierung führen viele Wege nach Rom.