Für eine Übung müssen wir Sockets programmieren und daher haben wir
einige Tutorials durchgelesen, leider sind diese recht unterschiedlich
und daher würde ich euch um einige Hilfestellungen bitten.
Die aktuelle Grundstruktur (ohne Fehlermeldungen) schaut wie folgt aus
1 | int sockfd, newsockfd;
|
2 | struct sockaddr_in serv_addr;
|
3 | char buffer[BUF];
|
4 |
|
5 | memset(buffer, 0, BUF * sizeof(*buffer));
|
6 |
|
7 | sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
8 |
|
9 | memset(&serv_addr, 0, sizeof(serv_addr));
|
10 |
|
11 | serv_addr.sin_family = AF_INET;
|
12 | serv_addr.sin_addr.s_addr = INADDR_ANY;
|
13 | serv_addr.sin_port = htons(PORT);
|
14 |
|
15 | bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
|
16 |
|
17 | listen(sockfd, 5);
|
18 | newsockfd = accept(sockfd, 0, 0);
|
Werden structs automatisch 0-initialisiert? Kann ich mir daher das
zweite Memset sparen? - Weiters könnte ich ja auch
1 | serv_addr.sin_addr.s_addr = INADDR_ANY;
|
weglassen, denn INADDR_ANY ist sowieso 0 - oder?
Dieser Server sollte eigentlich alle Anfragen annehmen und verarbeiten.
Wichtig ist nur, dass er TCP/IP verwendet.
Weiters wäre das erste memset auch überflüssig, da der Inhalt ja
überschrieben wird (außer im Fehlerfall) oder?
mfg
chris