#include #include #include #include #include #include #include #include /* argv[1] = le numéro de port sur lequel tourne le service (par ex:80 pour http) */ /* AF_INET= ipv4, SOCK_STREAM corresponds à TCP*/ #define BUFF_SIZE 1024 int main(int argc, char *argv[]) { int s; struct sockaddr_in addr_internet; struct sockaddr_in addr_client; if(argc<2) { printf("Usage : %s \n", argv[0]); exit(1); } if((s=socket(AF_INET, SOCK_STREAM,0))<0) { perror("socket"); exit(1); } addr_internet.sin_family=AF_INET; addr_internet.sin_port = (in_port_t)htons(atoi(argv[1])); addr_internet.sin_addr.s_addr = htonl(INADDR_ANY); if((bind(s, (struct sockaddr *)&addr_internet, sizeof(addr_internet)))<0) perror("bind"); if(listen(s, 10)<0) perror("listen"); socklen_t len_client; int new_socket; if((new_socket=accept(s, (struct sockaddr *)&addr_client, &len_client))<0) perror("accept"); printf("New client\n"); /* initialisation terminée */ char buff_e[BUFF_SIZE]; ssize_t nread; nread=read(0,buff_e,BUFF_SIZE); write(new_socket,buff_e,nread); char buff_r[BUFF_SIZE]; while(1) { nread=read(new_socket,buff_r,BUFF_SIZE); if(nread == 0) break; write(1,buff_r,nread); } close(s); return 0; }