Change variable names and comments
This commit is contained in:
parent
6ede2943a4
commit
276475b87d
2 changed files with 23 additions and 24 deletions
25
src/client.c
25
src/client.c
|
@ -14,11 +14,10 @@
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
int socket_fd; // socket id = file descriptor
|
int sockid;
|
||||||
int n; // pour récupérer les retours de read() et write()
|
|
||||||
int fin; // pour sortir de la boucle de lecture quond on recoit EOT
|
|
||||||
struct hostent *host;
|
|
||||||
struct sockaddr_in client_socket;
|
struct sockaddr_in client_socket;
|
||||||
|
struct hostent *host;
|
||||||
|
int n, fin;
|
||||||
char buf[BUF_LEN];
|
char buf[BUF_LEN];
|
||||||
|
|
||||||
/* Gestion des signaux */
|
/* Gestion des signaux */
|
||||||
|
@ -47,7 +46,7 @@ int main(int argc, char *argv[]) {
|
||||||
bcopy((void*) (host->h_addr), (void*) (&client_socket.sin_addr), host->h_length);
|
bcopy((void*) (host->h_addr), (void*) (&client_socket.sin_addr), host->h_length);
|
||||||
|
|
||||||
/* Définition du socket */
|
/* Définition du socket */
|
||||||
if ((socket_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
|
if ((sockid = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
|
||||||
perror("socket");
|
perror("socket");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -56,21 +55,21 @@ int main(int argc, char *argv[]) {
|
||||||
printf("Cible : %s : %d !\n", ip4tostring(ntohl(client_socket.sin_addr.s_addr)), ntohs(client_socket.sin_port));
|
printf("Cible : %s : %d !\n", ip4tostring(ntohl(client_socket.sin_addr.s_addr)), ntohs(client_socket.sin_port));
|
||||||
|
|
||||||
/* connect() avec un cast d'un struct générique, le type de struct sera découvert dans sa_family */
|
/* connect() avec un cast d'un struct générique, le type de struct sera découvert dans sa_family */
|
||||||
if (connect(socket_fd, (struct sockaddr *) &client_socket, sizeof(client_socket)) == -1) {
|
if (connect(sockid, (struct sockaddr *) &client_socket, sizeof(client_socket)) == -1) {
|
||||||
perror("connect");
|
perror("connect");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Maintenant qu'on est connecté, on peut échanger avec le serveur. Ici
|
/* Maintenant qu'on est connecté, on peut échanger avec le serveur.
|
||||||
* on a une boucle qui va nous demander un répertoire, le serveur se
|
* Ici on a une boucle qui va nous afficher un prompt, le serveur se
|
||||||
* chargera de nous renvoyer son contenu avec un `ls`.
|
* chargera de nous renvoyer le résultat de la commande envoyée.
|
||||||
* Tant qu'on n'a pas écrit "FIN", on boucle. */
|
* Tant qu'on n'a pas écrit EOT (^D sur Linux), on boucle. */
|
||||||
while (1) {
|
while (1) {
|
||||||
printf("%s$ ", argv[1]);
|
printf("%s$ ", argv[1]);
|
||||||
if (fgets(buf, BUF_LEN, stdin) != NULL) {
|
if (fgets(buf, BUF_LEN, stdin) != NULL) {
|
||||||
if (strcmp(buf, "exit\n") == 0) break;
|
if (strcmp(buf, "exit\n") == 0) break;
|
||||||
if (strlen(buf) == 1) continue; // Il n'a que '\n'
|
if (strlen(buf) == 1) continue; // Il n'a que '\n'
|
||||||
if ((n = write(socket_fd, buf, strlen(buf))) == -1) {
|
if ((n = write(sockid, buf, strlen(buf))) == -1) {
|
||||||
perror("write");
|
perror("write");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -86,7 +85,7 @@ int main(int argc, char *argv[]) {
|
||||||
/* Lecture de la réponse */
|
/* Lecture de la réponse */
|
||||||
/* Le retour de la commande du serveur pouvant etre très long, on fait une boucle de lecture */
|
/* Le retour de la commande du serveur pouvant etre très long, on fait une boucle de lecture */
|
||||||
fin = 0;
|
fin = 0;
|
||||||
while ((n = read(socket_fd, buf, BUF_LEN)) > 0) {
|
while ((n = read(sockid, buf, BUF_LEN)) > 0) {
|
||||||
if (buf[n - 1] == EOT) {
|
if (buf[n - 1] == EOT) {
|
||||||
fin = 1;
|
fin = 1;
|
||||||
n--;
|
n--;
|
||||||
|
@ -98,7 +97,7 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* On ferme la connexion */
|
/* On ferme la connexion */
|
||||||
close(socket_fd);
|
close(sockid);
|
||||||
printf("Déconnexion\n");
|
printf("Déconnexion\n");
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|
22
src/server.c
22
src/server.c
|
@ -16,11 +16,11 @@
|
||||||
int RUN = 1;
|
int RUN = 1;
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
int serv_sock_fd, child_sock_fd; // socket id = file descriptor
|
int serv_sockid, child_sockid;
|
||||||
struct sockaddr_in server_socket;
|
struct sockaddr_in server_socket;
|
||||||
struct sockaddr_in child_socket; // on définit juste, les valeurs seront récuperées dans accept()
|
struct sockaddr_in child_socket;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
long addr_len; // pour récuperer la longueur de l'adresse dans accept()
|
long addr_len;
|
||||||
|
|
||||||
/* Gestion des signaux */
|
/* Gestion des signaux */
|
||||||
signal(SIGCHLD, interrupt);
|
signal(SIGCHLD, interrupt);
|
||||||
|
@ -38,20 +38,20 @@ int main(void) {
|
||||||
// server_socket.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
|
// server_socket.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
|
||||||
|
|
||||||
/* Définition du socket */
|
/* Définition du socket */
|
||||||
if ((serv_sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
|
if ((serv_sockid = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
|
||||||
perror("socket");
|
perror("socket");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* bind() avec un cast d'un struct générique, le type de struct sera découvert dans sa_family */
|
/* bind() avec un cast d'un struct générique, le type de struct sera découvert dans sa_family */
|
||||||
if (bind(serv_sock_fd, (struct sockaddr *) &server_socket, sizeof(server_socket)) == -1) {
|
if (bind(serv_sockid, (struct sockaddr *) &server_socket, sizeof(server_socket)) == -1) {
|
||||||
perror("bind");
|
perror("bind");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* On récupere le port d'attache */
|
/* On récupere le port d'attache */
|
||||||
addr_len = sizeof(server_socket);
|
addr_len = sizeof(server_socket);
|
||||||
if (getsockname(serv_sock_fd, (struct sockaddr *) &server_socket, (socklen_t *) &addr_len) < 0) {
|
if (getsockname(serv_sockid, (struct sockaddr *) &server_socket, (socklen_t *) &addr_len) < 0) {
|
||||||
perror("getsockname");
|
perror("getsockname");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else {
|
} else {
|
||||||
|
@ -60,7 +60,7 @@ int main(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* On définit le nombre d'écoutes simultanées */
|
/* On définit le nombre d'écoutes simultanées */
|
||||||
if (listen(serv_sock_fd, 10) == -1) {
|
if (listen(serv_sockid, 10) == -1) {
|
||||||
perror("listen");
|
perror("listen");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ int main(void) {
|
||||||
/* On laisse le serveur accepter des connexions
|
/* On laisse le serveur accepter des connexions
|
||||||
* A chaque connexion établie, le serveur crée un fils pour gérer celle-ci. */
|
* A chaque connexion établie, le serveur crée un fils pour gérer celle-ci. */
|
||||||
while (RUN) {
|
while (RUN) {
|
||||||
if ((child_sock_fd = accept(serv_sock_fd, (struct sockaddr *) &child_socket, (socklen_t *) &addr_len)) < 0) {
|
if ((child_sockid = accept(serv_sockid, (struct sockaddr *) &child_socket, (socklen_t *) &addr_len)) < 0) {
|
||||||
perror("accept");
|
perror("accept");
|
||||||
} else {
|
} else {
|
||||||
printf("Connexion de %s !\n", ip4tostring(ntohl(child_socket.sin_addr.s_addr)));
|
printf("Connexion de %s !\n", ip4tostring(ntohl(child_socket.sin_addr.s_addr)));
|
||||||
|
@ -76,14 +76,14 @@ int main(void) {
|
||||||
/* Création d'un processus dédié au client */
|
/* Création d'un processus dédié au client */
|
||||||
if ((pid = fork()) == -1) {
|
if ((pid = fork()) == -1) {
|
||||||
perror("fork");
|
perror("fork");
|
||||||
write(child_sock_fd, "Erreur serveur !\n", 18);
|
write(child_sockid, "Erreur serveur !\n", 18);
|
||||||
} else {
|
} else {
|
||||||
if (pid == 0) { // code du fils
|
if (pid == 0) { // code du fils
|
||||||
service(child_sock_fd); // Regroupe le code pour le fils
|
service(child_sockid); // Regroupe le code pour le fils
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(child_sock_fd); // On ferme le file descriptor qu'on vient de créer puisque c'est le fils qui s'en occupe
|
close(child_sockid); // On ferme le file descriptor qu'on vient de créer puisque c'est le fils qui s'en occupe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue