Problem mit Dns.GetHostEntry()

  • Gute Nacht liebe Nachaktiven,


    ich sitz gerade an meinem Projekt für Ende der 13. Klasse was ich in 1 1/2 Wochen vorstellen muss.
    Ich bin auch fertig (ist ein TicTacToe Spiel in der Konsole, gegen Computer + übers Netzwerk mit TCP),
    allerdings funktioniert seit gerade die Dns.GetHostEntry() Funktion nicht mehr richtig und ich weiß nicht weiter.


    Ich übergebe eine vom Benutzer eingegeben IP an die Funktion (in diesem Fall meine private IP 192.168.2.107).


    Bis vor ca. einer Stunde hat auch alles funktioniert, aber jetzt bekomm ich als Adressen nur noch folgende:


    Aussehen sollte es aber so (hier hab ich IPAddress.Loopback an die Funktion übergeben):


    Der TcpListener läuft über die Adresse 0.0.0.0 damit jede Verbindung akzeptiert wird (egal ob die Adresse z.B. 10.1.25.40 ist oder 192.168.2.107)
    und der Port ist 6969.


    Hier noch ein zusammengeschnittener Screenshot, der einmal zeigt dass der Server auf eine Verbindung wartet
    und einmal wenn ein Client sich angeblich verbunden hat:


    Wie gesagt, bis vor einer Stunde ca. bekam ich bei der Funktion noch die Ergebnisse vom 2. Bild.
    Wäre nett wenn mir jemand der sich gut mit Netzwerken / Programmieren auskennt helfen kann, da ich echt am verzweifeln bin.
    Danke im Voraus.

  • Damit ich mich per IP und Hostname verbinden kann:


    Hier der ein Ausschnitt vom Code:

    Code
    1. IPHostEntry hostEntry = Dns.GetHostEntry(this.serverIP);
    2. this.client = new TcpClient(hostEntry.HostName, this.port);
    3. this.stream = this.client.GetStream();


    Der Benutzer kann halt entweder 192.168.2.107 oder in meinem Fall z.B. auch Fabian-PC.
    Da ich das ja in der Schule vorstellen muss (nur im LAN) soll man sich ruhig auch mit z.B. R420-16 verbinden können.


    Ich hab für das Projekt mich jetzt in die Netzwerkprogrammierung eingelesen, bin da also nicht so fit drin.
    Wie könnte man das denn noch machen?

  • Hm, ich würde einfach gar nicht mit diesen komischen Hostnames arbeiten.
    Einfach über IP und fertig.


    BTW: Die Adressen im ersten Bild sind definitv falsch bzw. du hast die Funktion mit falschen Parametern aufgerufen.


    E:
    62.157.140.133 -> Telekom IP
    80.156.86.78 -> Telekom IP

  • Hab jetzt eine (komische) Lösung gefunden:


    Zitat

    IPHostEntry hostEntry = Dns.GetHostByName(this.serverIP);
    this.client = new TcpClient(hostEntry.HostName, this.port);


    Keine Ahnung warum er da die richtige IP / Hostname findet, bei Dns.GetHostEntry() aber nicht.


    Visual Studio sagt sogar Dns.GetHostByName ist veraltet und man soll Dns.GetHostEntry verwenden.


    Naja, danke trotzdem für die Überlegung kuhkuh.


    PS:
    Hab jetzt auch herausgefunden dass die beiden IPs da Telekom IPs sind, aber keine Ahnung wieso er mir die anzeigt wenn ich nach 192.168.2.107 frage.
    Aber der Parameter ist / war 100% richtig, Beweis:


    Mit Dns.GetHostEntry():
    bild4.png


    Mit Dns.GetHostByName():
    bild5.png


    Keine Ahnung was da auf einmal los ist.
    Werde noch mal weiter probieren und auch am Montag in der Schule mal gucken ob es da noch geht.


    Trotzdem noch mal Danke :).

  • Gar nicht gemerkt ^^.


    Würde mich nur mal interessieren warum mein PC oder der Router oder was auch immer jetzt das benutzt.


    Hab noch mal Dns.GetHostEntry() mit "Fabian-PC" als Parameter versucht, das funktioniert.
    Nur wenn man die IP eingibt nicht, komisch.


    Naja danke dir aufjedenfall... hab schon gedacht ich kann ~10 Std Arbeit noch mal von vorne anfangen.
    Werde mich noch mal melden falls es in der Schule nicht funktioniert (was ich aber nicht denke).


    Wünsche noch eine gute Nacht.

  • Warum willst du überhaupt den Hostnamen auflösen, wenn du ne IP hast? Das brauchst du nicht mehr! Wenn ich direkt ne IP eingebe, kann der Verbindungsaufbau direkt losgehen, nur wenn ich wie in deinem Beispiel "Fabian-PC" also einen Hostnamen eingebe, musst du diesen auflösen und entsprechend DNS.GetHostEntry() aufrufen.