#include #include #include #include #include #include #include #include #include #include #define BACKLOG 5 int main() { fd_set rfds; struct timeval tv; int retval; struct sockaddr_in infoServer; struct sockaddr_in retourServer; socklen_t tailleRetourServ; int retourSocket; int retourBind; int retourListen; int retourAccept; int retourRead; int retourWrite; int msg; infoServer.sin_family = AF_INET; infoServer.sin_addr.s_addr = htonl(INADDR_ANY); infoServer.sin_port = htons(3434); FD_ZERO(&rfds); FD_SET(0, &rfds); tv.tv_sec = 5; tv.tv_usec = 0; retval = select(1, &rfds, NULL, NULL, &tv); retourSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if(retourSocket == -1) { printf("Erreur socket\n"); printf("%s", strerror(errno)); exit(errno); } retourBind = bind(retourSocket, (struct sockaddr *)&infoServer, sizeof(infoServer)); if(retourBind == -1) { printf("Erreur bind\n"); printf("%s", strerror(errno)); exit(errno); } retourListen = listen(retourSocket, BACKLOG); if(retourListen == -1) { printf("Erreur listen\n"); printf("%s", strerror(errno)); exit(errno); } tailleRetourServ = sizeof(retourServer); retourAccept = accept(retourSocket, (struct sockaddr *)&retourServer, &tailleRetourServ); if(retourAccept == -1) { printf("Erreur accept\n"); printf("%s", strerror(errno)); exit(errno); } retourRead = read(retourAccept, &msg, sizeof(msg)); if(retourRead == -1) { printf("Erreur recv\n"); printf("%s", strerror(errno)); exit(errno); } printf("%d", msg); msg = -msg; retourWrite = write(retourAccept, &msg, sizeof(msg)); if(retourWrite == -1) { printf("Erreur sendto\n"); printf("%s", strerror(errno)); exit(errno); } return 0; }