Voici le fichier main.cpp du server :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <iostream>
#include "../libnetwork/psocket_init.h"
#include "../definition_ports.h"
#define BACKLOG 10
int main(int argc, char **argv) {
std::cout << "Hello, world server!" << std::endl;
int sockfd = createTCPsocketServer(PORT, BACKLOG);
int new_fd;
socklen_t sin_size;
struct sockaddr_storage their_addr; char s[INET6_ADDRSTRLEN];
char buffer[MAXDATASIZE];
printf("server: waiting for connections...\n");
bool run(true), waitForPacket;
while(run){
sin_size = sizeof their_addr;
new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
if(new_fd != - 1){ close(sockfd);
waitForPacket = true;
while(waitForPacket){
if (recv(new_fd, buffer, MAXDATASIZE, 0) > 0){
printf("Client say: %s\n", buffer);
if(strcmp(buffer, "exit") == 0){
waitForPacket = false;
printf("Terminate connection\n");
}
if(strcmp(buffer, "quit") == 0){
waitForPacket = false;
run = false;
printf("Quit program\n");
}
}
}
close(new_fd);
}
}
close(sockfd);
std::cout << "Arrêt du server..." << std::endl;
return 0;
}
|
Vous avez remarqué le //Main SERVER au début du fichier, c'est pour savoir quel main on est en train d'écrire. Faites le dans les projets où vous avez plusieurs fichiers main, ça vous gagnera du temps.
On pourait l'écrire en C, mais si on veut traiter des chaînes de caractères plus tard, se sera plus simple avec des std::string.
|