#include "common_impl.h" #include #include #include #include #include #include #include int creer_socket(int type, int *port_num) { /* fonction de creation et d'attachement */ /* d'une nouvelle socket */ /* renvoie le numero de descripteur */ /* et modifie le parametre port_num */ int fd = 0; int sisize=sizeof(struct sockaddr_in ); struct sockaddr_in serv_addr; memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_port=htons(0); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=INADDR_ANY; fd=socket(AF_INET,type, IPPROTO_TCP); if (fd ==-1){ printf("ERROR\n"); } bind(fd, (struct sockaddr*) &serv_addr, sizeof(struct sockaddr_in)); getsockname(fd,(struct sockaddr*) &serv_addr,(socklen_t *)&sisize); *port_num=serv_addr.sin_port; return fd; } int do_accept(int s,struct sockaddr_in *sock){ int news; int length=sizeof(struct sockaddr_in); news= accept(s,(struct sockaddr *) sock,(socklen_t*)&length); if(news!=-1){ ERROR_EXIT("accept"); } return news; } void close_correctly (int sock1){ int c; c=close(sock1); if (c==-1){ ERROR_EXIT("exit"); } } void do_listen(int sockfd,int num_machine){ if (-1==listen(sockfd,num_machine)){ ERROR_EXIT("listen"); } } void init_addr_info(struct sockaddr_in* server,const char* name, const int port) { struct hostent *server_host; server->sin_family=AF_INET; server->sin_port=htons(port); server_host=gethostbyname(name); server->sin_addr=*(struct in_addr*)server_host->h_addr; }