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