Von anderem PC verbinden



  • Hallo an alle,
    ich habe es bis jetzt geschafft, mich mit meinem eigenen PC zu verbinden (Client/Server Anwendung) und eine Nachricht zu senden. Nun möchte ich mich mit meinem eigenen PC verbinden aber mit der äußeren IP Adresse und nicht mit 127.0.0.1. Ich bin in einem Netzwerk und würde gerne wissen wie das geht. Wenn ich einfach die äußere IP Adresse angebe, kann sich der Client nicht mehr verbinden.

    Kann mir bitte jemand helfen.

    LG
    Nichtswissender



  • Du brauchst einen zweiten Rechner, von dem aus du die Verbindung aufbaust. Dein Rechner wird intern immer merken, dass du die Verbindung zu ihm selbst aufbaust und das direkt machen, ohne Umweg über das Netzwerk.

    Vielleicht kann man sich auch etwas mit zwei Netzwerkkarten basteln, aber das ist wahrscheinlich komplizierter.



  • Hallo,
    danke mal für deine Antwort. Aber wenn er sowieso alles lokal macht, wieso funktioniert es dann mit 127.0.0.1 und mit der äußeren IP nicht?

    LG
    Nichtswissender



  • möglicherweise pfuscht dir die Firewall ins Ahndwerk.



  • Vielleicht hast du das listen-Socket nur an 127.0.0.1 und nicht (z.B.) 0.0.0.0 gebunden. Bei 127.0.0.1 ist das von außen nicht erreichbar.



  • Meinst du, dass ich nicht ADDR_ANY verwendet habe? Ansonsten weiß ich leider nicht was du meinst. Kannst du mir das vielleicht näher erklären?

    LG
    Nichtswissender



  • Nichtswissender schrieb:

    Meinst du, dass ich nicht ADDR_ANY verwendet habe? Ansonsten weiß ich leider nicht was du meinst. Kannst du mir das vielleicht näher erklären?

    LG
    Nichtswissender

    In deinem Programm, in dem du ja sehr wahrscheinlich mit Sockets arbeiten wirst, gibts du ja noch an, an welche IP der Socket gebunden werden soll und dort wirst du ja sehr wahrscheinlich "127.0.0.1" angegeben haben. Wenn das so ist, dann versuch an der Stelle die externe IP deines Rechners einzutragen. Alles klingt sehr danach, als würde es daran liegen, denn wenn du von deinem lokalen rechner deine externe IP anpingst geht das ja auch. Das OS nimmt lokale Anfragen sowohl an das Loopback als auch an das externe Device Anfragen gleichermaßen an.



  • evtl. ein nicht weitergeleiterter Port?(um mal mit ner ganz doofen Idee zu kommen)



  • Hallo an alle,
    danke für eure zahlreichen Antworten.

    @Berufspenner: Ich binde den Socket ja nur an einen Port und nicht an eine IP-Adresse. Wie bindet man einen Socket an eine IP?

    @JustAnotherNoob: Das mit der Portweiterleitung habe ich mir auch gedacht. Aber auch wenn ich im Router den Port freigebe funktioniert es nicht.

    Vielleicht hat jemand noch andere Vorschläge?

    Ich versuche es auf jeden Fall weiter und gebe euch bescheid, wenn ich es schaffen sollte.

    LG
    Nichtswissender



  • Nichtswissender schrieb:

    @Berufspenner: Ich binde den Socket ja nur an einen Port und nicht an eine IP-Adresse. Wie bindet man einen Socket an eine IP?

    Naja, du wirst ja in eine Struktur des Typs "sockaddr_in" anlegen, in der du dann die Informationen des Serversockets einträgst, u.a. auch die IP

    struct sockaddr_in meinsocket;
    serverinfo.sin_family = AF_INET;
    serverinfo.sin_addr.s_addr = inet_addr("127.0.0.1");
    serverinfo.sin_port = htons(12345);
    


  • Vielleicht ist die Endianess falsch. Dann kommen die falschen IP Adr. und Ports raus. Mit dem Sysinternalstool TcpView kannst Du gucken auf welchen Endpoint (IP + Port) dein Prozess den Socket gebunden hat.

    Simon



  • Da reicht doch aber schon netstat -a -n



  • witte schrieb:

    Da reicht doch aber schon netstat -a -n

    Da hast Du keine Prozesszuordnung...



  • Aber die IP gebe ich ja nur beim Client an. Wenn ich da 127.0.0.1 verwende funktioniert es ja auch, nur wenn ich die externe IP verwende, funktionierts nicht mehr



  • Kannst Du ein Telnet auf einen offenen Port dieser 'externen' IP machen?



  • Meinst du mit deiner 'externen' IP die deines PCs, also der Netzwerkkarte oder evtl. die Internet IP, die deinem Router zugewiesen wurde?



  • simon.gysi schrieb:

    witte schrieb:

    Da reicht doch aber schon netstat -a -n

    Da hast Du keine Prozesszuordnung...

    netstat -a -n -b



  • Hallo an alle,
    entschuldigt bitte, dass ich mich erst jetzt wieder melde, war aber am Wochenende unterwegs. Ich habe es noch immer nicht geschafft, mich übers Internet mit meinem eigenen PC zu verbinden.

    @The Toast: Ich meine die Internet IP die mir zugewiesen wurde.
    @witte: Ich kann auch keinen telnet auf den Port ausführen, es schreibt immer, dass die Verbindung fehlgeschlagen ist. Meinst du vielleicht, dass es an der Portweiterleitung liegt?

    Helft mir bitte weiter.

    LG
    Nichtswissender


Anmelden zum Antworten