📄 serveur1.c
字号:
#include <errno.h>#include <sys/wait.h>#include <unistd.h>#include "creerSocket.h"#define BUFF_SIZE 256/*void f(int desc) { int n; char buff1[BUFF_SIZE]; char buff2[BUFF_SIZE]; n = read(desc, buff1, BUFF_SIZE); if ( n == -1 ) { printf("erreur"); perror("Erreur de lecture"); return; } buff1[n] = '\0'; printf("client m'envoye %s\n", buff1); int i = atoi(buff1); sprintf(buff2, "boujour,%d", i+1); write(desc, buff2, BUFF_SIZE);}*/void f(int clientfd) { char buff [100]; int n; printf("comme in f\n"); n = recv(clientfd, buff, 100, 0 ); printf("n= %d", n); if ( n == -1 ) { printf("erreur"); perror("Erreur de lecture"); return; } while(n > 0) { printf("number of receive bytes = %d ", n); buff[n] = '\0'; write(STDOUT_FILENO, buff, n); send(clientfd, buff, n, 0); // buff[n] = ''; if(strcmp(buff, "quit ") == 0) { break; } }}int main(int argc, char **argv) { pid_t pid; struct sockaddr_in adr; socklen_t lg_adr = (socklen_t)sizeof(struct sockaddr_in); int port, ecoute, connexion; if (argc < 2) { fprintf(stderr, "usage: %s port\n",argv[0]); exit(2); } port = atoi(argv[1]); ecoute = creerSocket(SOCK_STREAM, port, &adr); printf("ok,creer socket\n"); if ( ecoute == -1 ) { fprintf(stderr, "Creation de socket impossible\n"); exit(2); } if (listen(ecoute, 10) == -1) { perror("listen"); exit(2); } printf("ok,attendre clients\n"); while(1) { connexion = accept(ecoute, (struct sockaddr *)&adr, &lg_adr); printf("accept\n"); if (connexion == -1) { if (errno == EINTR) continue; else { perror("accept"); exit(1); } } switch (fork()) { case -1 : perror ("fock"); exit(1); case 0 : printf("fils"); close (ecoute); f(connexion); close (connexion); exit(0); default : shutdown(connexion, SHUT_WR); } } close (ecoute); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -