Public feed
#727681
#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <sys/types.h>#include <sys/time.h>#include <arpa/inet.h>#include <sys/socket.h>#include <unistd.h>#include <strings.h>int main(void){ int sd1, sd2, err = 0; char buff1[1024], buff2[1024]; fd_set reading; FD_ZERO(&reading); sd1 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sd2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in server, s2; /* we should receive data from server */ struct timeval the_time; the_time.tv_sec = 2; the_time.tv_usec = 0; bzero(&server, sizeof(server)); bzero(&s2, sizeof(s2)); server.sin_family = AF_INET; server.sin_port = htons(13); server.sin_addr.s_addr = inet_addr("216.86.77.194"); s2.sin_family = AF_INET; s2.sin_port = htons(13); s2.sin_addr.s_addr=inet_addr("127.0.0.1"); int strsize = sizeof(struct sockaddr); if(connect(sd1, (struct sockaddr *)&server, strsize)==-1) { perror("connect 1\n"); return --err; } if(connect(sd2, (struct sockaddr *)&s2, strsize)==-1) { perror("connect 2\n"); return --err; } FD_SET(sd1, &reading); FD_SET(sd2, &reading); int greatest = sd2+1; int shandler = select(greatest, &reading, NULL, NULL, &the_time); if(shandler == -1) { perror("select\n"); return --err; } if(shandler == 0) { perror("TIMEOUT\n"); return --err; } else { if(FD_ISSET(sd1, &reading)) { printf("Socket 1 READY\n"); if(recv(sd1, buff1, 1024, 0)==-1) return errno; printf("BUFF 1: %s\n", buff1); close(sd1); } if(FD_ISSET(sd2, &reading)) { printf("Socket 2 READY\n"); if(recv(sd2, buff2, 1024, 0)==-1) return errno; printf("BUFF 2: %s\n", buff2); close(sd2); } } return 0;}