#include #include #include #include #include #include #define SA(ptr) ((struct sockaddr *)(ptr)) int main(int argc, char *argv[]){ if (argc<2){ fprintf(stderr, "arg1 must be set for port\n"); exit(-1); } int port = atoi(argv[1]); if (port == 0) { fprintf(stderr, "port must not be 0\n"); exit(-1); } int socketfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in address = {0}; address.sin_family = AF_INET; address.sin_port = htons(port); address.sin_addr.s_addr = inet_addr("127.0.0.1"); int con_err=connect(socketfd, SA(&address), sizeof(address)); if (con_err<0){ printf("connect error %d\n",con_err); perror("socketfd error"); exit(-1); } struct pollfd fds[2] = { { 0, POLLIN, 0 }, { socketfd, POLLIN, 0 } }; for (;;){ char buffer[30000]={0}; poll(fds, 2, 50000); if (fds[0].revents & POLLIN) { read(0, buffer, 30000); send(socketfd, buffer, 30000, 0); } else if(fds[1].revents & POLLIN){ //if(read(socketfd,buffer,30000)<0){ printf("\nREAD FAILED\n\n"); close(new_socket); break; } if(recv(socketfd, buffer, 30000, 0)==0){ printf("recv got 0 --client\n\n"); exit(1); } printf("%s\n",buffer); } } return 0; }