程序执行结果:[root@FriendlyARM server]# /tcp_server_armreceive data:: Transport endpoint is not connected192.168.1.100 send:receive data:: Transport endpoint is not connected192.168.1.102 send:receive data:: Transport endpoint is not connected192.168.1.102 send:无法接收到数据下面是源码,无注释,如果您是高手一定能看懂...源码已上传#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<sys/types.h>#include<netinet/in.h>#include<sys/socket.h>#include<sys/select.h>#include<sys/time.h>#include<sys/wait.h>#include<unistd.h>
int main(void){ int socket_server,socket_client; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int serverPORT=5000; int BACKLOG=20; int addr_len=0; int maxfdp=0; int num=0; fd_set fds; struct timeval timeout={2,0}; char buffer[256]; if((socket_server=socket(AF_INET,SOCK_STREAM,0))==-1) { perror("create socket_server:"); exit(1); } server_addr.sin_family=AF_INET; server_addr.sin_port=htons(serverPORT); server_addr.sin_addr.s_addr=INADDR_ANY; bzero(&(server_addr.sin_zero),8); if(bind(socket_server,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1) { perror("bind:"); exit(1); } if(listen(socket_server,BACKLOG)==-1) { perror("listen:"); exit(1); } while(1) { FD_ZERO(&fds); FD_SET(socket_server,&fds); maxfdp=socket_server+1; switch(select(maxfdp,&fds,NULL,NULL,&timeout)) { case -1: break; case 0: break; default: if(FD_ISSET(socket_server,&fds)) { addr_len=sizeof(struct sockaddr); if((socket_client=accept(socket_server, (struct sockaddr*) &client_addr, &addr_len))<0) { perror("accept client:"); continue; } if((recv(socket_server,buffer,sizeof(buffer),0))<=0) { perror("receive data:"); } printf("%s send: %s\n",inet_ntoa(client_addr.sin_addr),buffer); } } } return 0;}