#include <stdio.h> #include <signal.h> #include <string.h> #include <stdlib.h> #include <pthread.h> #include <sys/select.h> #include <sys/time.h> #include <sys/types.h> #include <sys/socket.h> #include <linux/in.h> #include <unistd.h> #include <fcntl.h> int main() { int max,i; int fd = 0; int se_num; int sock,client_sock; int num; fd_set rset; char buf[512]; struct sockaddr_in server_addr; struct sockaddr client_addr; int len = sizeof(struct sockaddr); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(2631); /* it is ok */ //server_addr.sin_addr.s_addr = htonl(0x7f000001); inet_aton("127.0.0.1",&server_addr.sin_addr); int fl_sock; if((sock = socket(AF_INET,SOCK_STREAM,0)) < 0) { perror("socket"); return -1; } if((bind(sock,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))) < 0) { perror("bind"); return -1; } if((listen(sock,5)) < 0) { perror("listen"); return -1; } if((client_sock = accept(sock,&client_addr,&len)) < 0) { perror("accept"); return -1; } fprintf(stderr,"client_sock = %d\n",client_sock); while(1) { memset(buf,0,sizeof(buf)); if((num=read(client_sock,buf,sizeof(buf))) == 0) { fprintf(stderr,"client is closed\n"); return -1; } printf("client(num=%d): %s\n",num,buf); } }
#include <stdio.h> #include <signal.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <sys/select.h> #include <sys/time.h> #include <sys/types.h> #include <sys/socket.h> #include <linux/in.h> #include <unistd.h> #include <fcntl.h> void sig_pipe(int a) { printf("receive signal pipe\n"); exit(-1); } int main() { int sock,client_sock; fd_set rset; int num; char buf[] = "hello world\0r"; struct sockaddr_in server_addr; struct sockaddr client_addr; int len = sizeof(struct sockaddr); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(2631); inet_aton("127.0.0.1",&server_addr.sin_addr); signal(SIGPIPE,sig_pipe); if((sock = socket(AF_INET,SOCK_STREAM,0)) < 0) { perror("socket"); return -1; } if(connect(sock,(struct sockaddr *)&server_addr,sizeof(struct sockaddr)) < 0) { perror("connect"); return -1; } while(1) { printf("write %d\n",write(sock,buf,sizeof(buf))); sleep(1); } }