fortgeschrittener Anfänger: Socket Probleme



  • Hallo
    Ich hab ein paar Probleme mit Sockets:
    Hab mir das tut von http://www.zotteljedi.de/socket-tipps.html geholt und folgendes ist los:

    Mein Code:

    #include <windows.h>
    #include <string.h> 
    #include <iostream> 
    #include <fstream.h> 
    #include <iostream.h>
    #include <sys/types.h>
    #include <winsock.h>
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow )
    {
    
    // Sockets Anschalten:   <---- Ist das richtig???
    {
    WSADATA wsa;
    if (WSAStartup(MAKEWORD(1, 1), &wsa))
    {
    printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError());
    return EXIT_FAILURE;
    }
    }
    
    //Socket erzeugen
    int as = socket(AF_INET, SOCK_STREAM, 0);
    
    //Falls kein Socket erstellt worden konnte:
    if (as == -1)
    {
    perror("socket() failed");
    return 1;
    }
    
    listen(as, 3) ;  // <-- Muss ich das noch machen, nachdem es doch schon in der schleife vorkommt..?
    
    //   Er gibt nach programmende immer 3 zurück..warum?
    if (listen(as, 3) == -1)
    {
    perror("listen () failed");
    return 3;
    }
    
    // Hier hab ich versucht mich mit mir zu verbinden 127.0.0.1. Problem: Wo tippe ich da Port + IP ein?
    
    //int connect(as, &adresse, int addrlen );
    
        return 0;
    }
    

    Nochwas..wenn ich listen() mache, müsste das programm doch eigentlich mindestens so lange laufen, bis wenigstens einer versucht zu verbinden? oder?
    Könnt ihr mir helfen?

    Anonym001



    1. ich würd die geschweiften klammern um das winsock starten wech machen, damit die wsa variable dauerhaft existiert.

    2. listen musst du nur einmal aufrufen. wenn du einen client annehmen willst, brauchst du accept -> dein tut, unter "6. Grundstruktur eines Servers"

    3. connect -> dein tut, unter "5. grundstruktur eines client"

    edit:

    1. sys/types.h is nur wenn du linux machst, du bruachst für dein programm momentan nur windows.h, winsock.h und iostream (und das für perror) 🙂

    [ Dieser Beitrag wurde am 18.01.2003 um 17:21 Uhr von Korbinian editiert. ]



  • ahja hatte ich ja ganz übersehen...danke


Anmelden zum Antworten