Server/Client SCO Unix



  • Hallo Leute,
    ich bin grad am Spielen mit einer Server, Client Lösung auf Unix, ich probiere grad aus dem Buch "C von A bis Z" ein Bespiel aus, unter Linux funktioniert es wunderbar, bloss SCO Unix meckert der Compiler rum:

    /* Erzeuge das Socket */
        sock = socket( AF_INET, SOCK_STREAM, 0 );
        if (sock < 0)
            error_exit( "Fehler beim Anlegen eines Sockets");
    
        /* Erzeuge die Socketadresse des Servers
         * Sie besteht aus Typ, IP-Adresse und Portnummer */
        memset( &server, 0, sizeof (server));
        if ((addr = inet_addr( argv[1])) != INADDR_NONE) {
            /* argv[1] ist eine numerische IP-Adresse */
            memcpy( (char *)&server.sin_addr, &addr, sizeof(addr));
        }
        else {
            /* Für den Fall der Fälle: Wandle den
             * Servernamen bspw. "localhost" in eine IP-Adresse um */
            host_info = gethostbyname(argv[1]);
            if (NULL == host_info)
                error_exit("Unbekannter Server");
            /* Server-IP-Adresse */
            memcpy( (char *)&server.sin_addr,
                    host_info->h_addr, host_info->h_length );
        }
    

    Fehlermeldung des Compilers:
    bash-2.03# cc -O client2.c -o client2.bin
    Undefiniertes Erstbezug
    Symbol in Datei
    inet_addr client2.o
    gethostbyname client2.o
    UX:ld: FEHLER: Fehler beim Symbolbezug. Es wurde keine Ausgabe auf client2.bin g
    eschrieben.
    bash-2.03#

    Er kennt inet_addr nicht und gethostbyname ... auf das gethostbyname könnt ich verzichten, da definier ich halt das nur IP-Adressen übergeben werden sollen.

    Aber wieso kennt er das inet_addr nicht? und vorallem Linux kennt es?

    Compiler-Problem oder Syntax-Problem?

    Danke für Eure Hilfe.

    Mfg

    Alex



  • Ich vermute eher, dass unter SCO die Socket-Funktionen in einer separaten Bibliothek enthalten sind, und nicht in der (immer mitgelinkten) C-Runtime. Welche das allerdings ist kann ich Dir mangels Erfahrung mit SCO nicht sagen.

    BTW: Schalt mal dem Deutsch ab, das ist ja gräßlich. Compilermeldungen gehören Englisch 😉



  • Hallo LordJaxom,

    danke für den Tipp, ich habe mal ein bisschen in den Lib-Verzeichnissen bei SCO gesucht, und habe spontan die libsocket.so gefunden,

    ein cc -L /usr/lib -lsocket -O client.c -o client.bin ⚠
    beziehungsweise cc -lsocket -O client.c -o client.bin funzt auch!
    Brachte den Erfolg, vielen Dank für den Tipp.

    Gruss Alex

    PS: Wir sind halt Deutsche 😉


Anmelden zum Antworten