TelNet und Sockets!?



  • Hallo.

    Da es hier ja kein Netzwerk-Forum oder etwas in der Art gibt, habe ich mal hier hinein geschrieben.
    Ich habe mir eine einfache Serveranwendung programmiert für Windows mit Sockets:

    #include <iostream>
    #include <winsock.h>
    #include <windows.h>
    
    SOCKET s;
    
    bool InitProgramm()
    {
        WSADATA wsa;
        if(WSAStartup(MAKEWORD(1, 1), &wsa))
            return false;
        return true;
    }
    
    bool InitSocket()
    {
        if(-1 == (s = socket(AF_INET, SOCK_STREAM, 0)))
            return false;
    
        return true;
    }
    
    bool Bind()
    {
        SOCKADDR_IN addr;
        memset(&addr, 0, sizeof(SOCKADDR_IN));
        addr.sin_family = AF_INET;
        addr.sin_port   = htons(2000);
        addr.sin_addr.s_addr = INADDR_ANY;
    
        if(bind(s, (SOCKADDR*)&addr, sizeof(addr)) == -1)
            return false;
    
        return true;
    }
    
    bool Listen()
    {
        if(listen(s, 15) == -1)
            return false;
        return true;
    }
    
    int GetClients()
    {
        SOCKADDR_IN cli;
        int         cli_size, c;
    
        while(true)
        {
            cli_size = sizeof(cli);
            c = accept(s, (SOCKADDR*)&cli, &cli_size);
            if(c == -1)
                return 5;
    
            std::cout << "Client verbindet sich mit IP: " << inet_ntoa(cli.sin_addr) << '\n';
    
            //close(c);
        }
    
        return 0;
    }
    
    int main()
    {
        using namespace std;
    
        if(!InitProgramm())
            return 1;
    
        cout << "Programm wurde erfolgreich eingeleitet...\n";
    
        if(!InitSocket())
            return 2;
    
        cout << "Socket wurde erfolgreich erstellt...\n";
    
        if(!Bind())
            return 3;
    
        cout << "Socket wurde erfolgreich gebunden...\n";
    
        if(!Listen())
            return 4;
    
        cout << "Socket wurde erfolgreich in den Listen-Modus versetzt...\n";
    
        return GetClients();
    }
    

    So.
    Aber wenn ich jetzt folgendes in die Win32 Konsole eingebe:

    telnet localhost 2000

    Dann kann er nicht verbinden!
    Der Virenscanner könnte es gesperrt haben, gibt es evtl noch eine Alternative?
    Wenn mir jemand mal versuchen möchte irgendwie an diesen Port zu verbinden, dann kann er das auch gerne tun. 🙄
    Ich weiß aber nicht inwiefern das geht, also die IP meines Routers ist:
    192.168.1.32
    Aber ich glaube das nutzt net viel, wenn der Router dazwischen ist, oder? 🙄
    Bin um jede Hilfe dankbar!

    MfG MAV (<--)



  • das ist eine private netzwerkip ( klasse c ) , kann keiner von uns drauf zugreifen 🙂



  • Und wenn mein Programm als Server dienen soll, und sich Leute dahin connecten sollen? 😞
    Muss ich da nen Proxy zwischenschalten?
    Und wie soll sowas gehen?

    MfG MAV



  • Entweder du mappst den port (-> google) oder du legst das prog auf den router wenn das möglich ist...



  • Hab keinen Root-Zugriff auf Router...
    Also mach ich mal das Erstere...

    THX!



  • Ist nix, ich find nur scheiße.



  • Halso,

    ich habe jetzt irgendwas mit Forward gemacht und ich kann von meinem PC wenigstens darauf zugreifen.
    Aber andere PCs können das nicht. 😞

    ZyXEL Prestige Router habe ich...

    MfG MAV



  • Ohne Zugriff auf den Router kannst du wohl weder das eine noch das andere machen



  • Mein Router macht Port-Forwarding (z.B. Port 80 an PC1)

    wenn dann jemand von aussen ne Anfrage an meine IP-Addy auf Port 80 stellt (also an den Router) gibt er die anfrage an PC1 weiter. Der HTTP-Server der auf PC1 installiert ist, anwortet dann.

    Da sollte dann jeder von aussen drauf zugreifen können

    Musst halt Root-Zugriff haben sonst wird das nix -.(

    [ Dieser Beitrag wurde am 22.05.2003 um 09:51 Uhr von Der_Knob editiert. ]



  • Tja, "Root-Zugriff" wird er wohl haben, sonst ginge folgendes ja net:

    Original erstellt von <Mi GAST>:
    ich habe jetzt irgendwas mit Forward gemacht

    Auch wenn "Root-Zugriff" in diesem Fall wohl nur meint, daß er per Webbrowser-Konfiguration ein Portforwarding des Ports 2000 auf seinen PC (IP) gemacht hat.

    Von Deinem eigenen PC (wo auch der Server läuft) solltest Du IMMER mit telnet 127.0.0.1:2000 auf Deinen Server connecten können (es sei denn, Du hast eine Desktop-Firewall laufen - wie z.B. auch die, die bei Windows xp dabei ist). Alle PCs jenseits des Routers (aus dem riesengroßen bösen Internet) sollten durch die Port-Weiterleitung jetzt auch connecten können...


Anmelden zum Antworten