//server.c #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define BUFSIZE 128 #define IP "192.168.2.11" #define PORT 1916 int main() { int sockLis, sockCon; struct sockaddr_in addrSer; struct sockaddr_in addrCon; int ret, addrlen; char buf[BUFSIZE]; if((sockLis = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } bzero(&addrSer,sizeof(struct sockaddr_in)); addrSer.sin_family = AF_INET; addrSer.sin_port = htons(PORT); addrSer.sin_addr.s_addr = inet_addr(IP); if(bind(sockLis, (struct sockaddr*)&addrSer, sizeof(struct sockaddr_in)) == -1) { perror("bind"); exit(1); } if(listen(sockLis, 5) == -1) { perror("listen"); exit(1); } addrlen = sizeof(addrCon); if((sockCon = accept(sockLis, (struct sockaddr*)&addrCon, &addrlen)) == -1) { perror("accept"); exit(1); } printf("%s connected/n", inet_ntoa(addrCon.sin_addr)); again: bzero(buf, BUFSIZE); ret = recv(sockCon, buf, BUFSIZE, 0); send(sockCon, buf, ret, 0); goto again; close(sockLis); close(sockCon); return 0; } //client.c #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/select.h> #include <sys/time.h> #include <unistd.h> #define BUFSIZE 128 #define IP "192.168.2.11" #define PORT 1916 #define IPCLIENT "192.168.2.12" int main() { int sockCon; struct sockaddr_in addrSer, addrCli; int ret; char buf[BUFSIZE]; int i = 0; fd_set rdfds; struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; if((sockCon = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } bzero(&addrCli, sizeof(addrCli)); addrCli.sin_family = AF_INET; addrCli.sin_port = htons(PORT); addrCli.sin_addr.s_addr = inet_addr(IPCLIENT); if(bind(sockCon, (struct sockaddr*)&addrCli, sizeof(addrCli)) == -1) { perror("bind"); exit(1); } bzero(&addrSer,sizeof(struct sockaddr_in)); addrSer.sin_family = AF_INET; addrSer.sin_port = htons(PORT); addrSer.sin_addr.s_addr = inet_addr(IP); if(connect(sockCon, (struct sockaddr*)&addrSer, sizeof(addrSer)) == -1) { perror("connect"); exit(1); } again: bzero(buf, BUFSIZE); sprintf(buf,"%d",i++); send(sockCon, buf, strlen(buf), 0); FD_ZERO(&rdfds); FD_SET(sockCon, &rdfds); ret = select(sockCon+1, &rdfds, NULL, NULL, &tv); if(ret<0) { perror("select"); exit(1); } else if(ret == 0) { printf("timeou/n"); } else { ret = recv(sockCon, buf, BUFSIZE, 0); printf("recv: >>|%s|<</n", buf); } sleep(3); goto again; close(sockCon); return 0; }