/*****************************************************************/ /* Dateiname : ServerIPAnzeige.c */ /* Beschreibung: Server-Programm */ /* Sendet Web-Seite mit IP-Adresse des Client und */ /* eine Kopie der HTTP-Nachricht über Port 5000 */ /* mit Endlos-Schleife für beliebig viele Zugriffe */ /*****************************************************************/ #include #include #include #include #include #include main() { int server_socket, neuer_socket; int laenge, anzahl; struct sockaddr_in serverinfo, clientinfo; char empfangene_zeichen[1000]; char web_seite[1000]; unsigned short int portnummer = 5000; char ip_adresse[] = "INADDR_ANY"; printf("\n Server: socket()..."); server_socket = socket(AF_INET, SOCK_STREAM, 0); serverinfo.sin_family = AF_INET; serverinfo.sin_addr.s_addr = htonl(INADDR_ANY); serverinfo.sin_port = htons(portnummer); laenge = sizeof(serverinfo); printf("\n Server: bind()..."); bind(server_socket, (struct sockaddr *)&serverinfo, laenge); printf("\n Server: listen()..."); printf("\n Server mit IP %s",ip_adresse); printf(" an Port %d wartet...",portnummer); listen(server_socket, 3); while(1) { printf("\n Server: accept()..."); neuer_socket = accept(server_socket, (struct sockaddr *)&clientinfo, &laenge); printf("Verbindung mit %s",inet_ntoa(clientinfo.sin_addr)); anzahl = read(neuer_socket,empfangene_zeichen,sizeof(empfangene_zeichen)); empfangene_zeichen[anzahl]=0; printf("\n\n empfangen: \n\n%s",empfangene_zeichen); sprintf(web_seite,"HTTP/1.1 200 OK\r\n\r\n\

Ihre IP-Adresse ist %s

",\ inet_ntoa(clientinfo.sin_addr)); printf("\n\n Server: sende: \n\n%s",web_seite); write(neuer_socket,web_seite,strlen(web_seite)); sprintf(web_seite,"\

Ihre Nachricht ist: %s

",\ empfangene_zeichen); printf("\n\n Server: sende: \n\n%s",web_seite); write(neuer_socket,web_seite,strlen(web_seite)); printf("\n\n Server: close()..."); close(neuer_socket); } }