Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Probleme mit Winsock!!

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.12.2002
    Beiträge
    10

    Probleme mit Sockets!!

    Hi, ich habe mich ein wenig mit Winsock befasst, doch ich habe schon Probleme damit!! Hier ist der Code
    Code:
    #include <stdio.h> 
    #include <netdb.h> 
    #include <netinet/in.h> 
    #include <sys/socket.h> 
    #include <sys/types.h> 
    void main() 
    { 
    _ _int Socket; 
    _ _int Connect; 
    _ _ 
    _ _struct sockaddr_in 
    _ _{ 
    _ __ _short int sin_family; 
    _ __ _unsigned short int sin_port; 
    _ __ _struct in_addr sin_addr; 
    _ _}; 
    _ _struct sockaddr_in addr; 
    _ _Socket = socket(AF_INET, SOCK_STREAM, 0); 
    _ _addr.sin_addr = inet_addr("127.0.0.1"); 
    _ _addr.sin_port = htons(80); 
    _ _addr.sin_family = AF_INET; 
    _ _ 
    _ _if (Socket < 0) 
    _ _{ 
    _ __ _printf("Socket erstellung Fehlgeschlagen\n"); 
    _ _} 
    _ __ _if (connect(Socket, &addr, sizeof(addr)) == -1) 
    _ _{ 
    _ __ _perror("connect() failed"); 
    _ __ _return 2; 
    _ _} 
    }
    Wenn ich ihn unter gcc compiliere bikomme ich einige nur Fehler zurück.

    mfg rrf
    I love Linux, because life is too short for reboot!!

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.08.2002
    Ort
    Berlin
    Beiträge
    128
    wer ganz gut wenn du erzählst was du für Fehler erhälst

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Deine Probleme liegen hauptsächlich an allgemeinen Fehlern:
    PHP-Code:
    #include <stdio.h> 
    #include <netdb.h> 
    #include <netinet/in.h> 
    #include <sys/socket.h> 
    #include <sys/types.h> 
    #include <arpa/inet.h> /* Für inet_aton */

    /* void main() entspricht nicht dem Standard! Außerdem benutzt
    du return hier, aber trotzdem ist main vom Typ void, warum? */
    int main(int argcchar **argv

    int Socket

    /* Dieses ganze struct sockaddr_in musst du hier nicht nochmal definieren
       Da das ja schon in den Header-Dateien getan wird */
    struct sockaddr_in addr
    Socket socket(AF_INETSOCK_STREAM0); 
    /* inet_addr wird nicht mehr genutzt!
     Statt addr.sin_addr = inet_addr("127.0.0.1"); das hier schreiben: */
    inet_aton("127.0.0.1", &addr.sin_addr);

    addr.sin_port htons(80); 
    addr.sin_family AF_INET

    if (
    Socket 0

    printf("Socket erstellung Fehlgeschlagen\n"); 

    if (
    connect(Socket, &addrsizeof(addr)) == -1

    perror("connect() failed"); 
    return 
    2
    }
    return 
    0/*Weil main vom Typ int ist, musst du einen Wert zurückgeben. */ 

    Wenn ich das jetzt mit gcc -Wall kompiliere bekomm ich keine Fehlermeldung:

    c ya,
    Tobias

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.12.2002
    Beiträge
    10
    @thortkamp Das mit dem void main() -> int main() hatte ich schon geändert, hatte aus versehen nicht den Aktuellsten Code gepostet!! Und das Struct sockaddr_in schon in der Header Datei Definiert ist wuste ich gar nicht!! Nur wenn ich den neuen Code Compiliere kommt noch ein Fehler und nähmlich in der Zeile 35:
    type 'const sockaddr' is not a base type for 'sockaddr_in'
    Was bedeutet das??


    mfg rrf

    edit: Kennt jemand noch gute Deutsche Tutorials für Winsock unter Unix/Linux??
    Geändert von red_rapid_fire (20-12-2002 um 14:49 Uhr)
    I love Linux, because life is too short for reboot!!

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.12.2002
    Beiträge
    10
    Ok, habe das Problem lösen können, doch jetzt hab ich schon wieder Probleme
    und zwar mit accept()
    Code:
    Accept = accept(Socket, (struct sockaddr *)&remote_addr, &cli_size);
    Egal was ich mache ich bekomme vom Compiler immer ur die Meldung:
    passing 'int *' as argument 3 of 'accept(int, sockaddr *, socklen_t *)' changes sigdness
    Was ist falsch??

    mfg rrf
    I love Linux, because life is too short for reboot!!

  6. #6
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Kennt jemand noch gute Deutsche Tutorials für Winsock unter Unix/Linux??
    Suche mal im Forum nach Sockets Tutorials. Winsock gibt es nur unter Windows...

    c ya,
    Tobias

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von red_rapid_fire
    Was ist falsch??
    Die Fehlermeldung besagt, dass du keinen int als dritten Parameter nehmen sollst, weil int eine vorzeichenbehaftete Darstellung (signed) und als dritter Parameter ein vorzeichenloser Typ (unsigned) erwartet wird.

    Du kannst einfach cli_size als socklen_t deklarieren, das ist genau der Typ, den er erwartet.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Winsock unter Linux???

    Winsock unter Unix?

    Mfg
    Geändert von Lin728 (19-08-2017 um 15:49 Uhr)

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Winsock unter Linux???

    Original geschrieben von ceisserer
    Servus!!

    Winsock unter Unix? Hab ich da was nicht mitbekommen??
    Der OP hat ein ungünstiges Subject gewählt und es bisher noch nicht korrigiert.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •