Prof. Dr. Franz Schweiggert -- Sektion Angewandte
Informationsverarbeitung -- 19. Dezember 1997
Ingo Melzer Blatt 9
[c]
Systemnahe Software I
Allgemeine Informatik III (WS 97/98)
Abgabetermin 13. Januar 1998
Schreiben Sie mindestens zwei Module (zum Beispiel könnte die Ausgabe abgekapselt werden), und ein Makefile. Die Dateien sock.h und sock.o können von der Homepage der Vorlesung gezogen werden.
gcc -Wall -c yourfile.c gcc -Wall -lsocket -lnsl -o yourfile yourfile.o sock.o
Es werden folgende Funktionen in sock zu Verfügung gestellt:
Hier noch eine kleine Beispielanwendung:
#include "sock.h"
void main(int argc, char *argv[]) {
int sock;
char hostname[64];
char rec[1024];
int port;
if (argc == 3) { /* 2 Kommandozeilenargumente - hostname und Port */
strcpy(hostname, argv[1]);
sock = init_sock(&port); /* init to send */
printf("I am now on port %d.\n", port);
port = atoi(argv[2]);
printf("Sending %s to %s on port %d.\n", "Hallo arg 3", hostname, port);
sendline(hostname, port, sock, "Hallo arg 3");
printf("Line sent.\n");
} else {
sock = init_sock(&port); /* init to receive */
printf("I am now on port %d.\n", port);
if (argc == 2) {
strcpy(hostname, argv[1]);
} else {
printf("Please enter other player's hostname: ");
scanf("%s", hostname);
}
printf("Please enter other player's port: ");
scanf("%d", &port);
printf("Sending %s to %s on port %d.\n", "Hallo no args", hostname, port);
sendline(hostname, port, sock, "Hallo no args");
}
receiveline(hostname, port, sock, rec); /* Blocks until line received */
printf("I got: %s.\n", rec);
printf("Sending %s to %s on port %d.\n", "Another line", hostname, port);
sendline(hostname, port, sock, "Another line");
receiveline(hostname, port, sock, rec);
printf("I got: %s.\n", rec);
close_sock(sock);
exit(0);
}