/*服务端程序*/#include#include#include#include#include#include#include#include#include#includeint main(void){ int sockfd,ret,newfd; int readlen; int theirlen; char recv[100]={0}; struct sockaddr_in myaddr; struct sockaddr_in theiraddr; if((sockfd=socket(AF_INET,SOCK_STREAM,0)) { printf("socket failed(%s)\n", strerror(errno)); exit(0); } memset(&myaddr,0,sizeof(myaddr)); myaddr.sin_family=AF_INET; myaddr.sin_port =htons(3490); myaddr.sin_addr.s_addr=htonl(INADDR_ANY); if((ret=bind(sockfd,(struct sockaddr *)&myaddr,sizeof(myaddr))) { printf("bind failed\n"); exit(0); } if((ret=listen(sockfd,10)) { printf("listen failed\n"); exit(0); } theirlen=sizeof(theiraddr); if((newfd=accept(sockfd,(struct sockaddr *)&theiraddr,&theirlen)) { printf("accept failed\n"); exit(0); } while(1) { memset(recv,0,sizeof(recv)); readlen=read(newfd,recv,sizeof(recv)); fputs(recv,stdout); write(newfd,recv,readlen); } close(newfd); close(sockfd); return 0;} /*客户端程序*/#include#include#include#include#include#include#include#include#includeint main(void){ int sockfd,ret; int readlen; char send[100]={0}; char recv[100]={0}; struct sockaddr_in myaddr; if((sockfd=socket(AF_INET,SOCK_STREAM,0)) { printf("socket failed\n"); exit(1); } memset(&myaddr,0,sizeof(myaddr)); myaddr.sin_family=AF_INET; myaddr.sin_port =htons(3490); myaddr.sin_addr.s_addr=inet_addr("192.168.1.110"); if((ret=connect(sockfd,(struct sockaddr *)&myaddr,sizeof(myaddr))) { printf("connect failed\n"); exit(1); } while(1) { memset(recv,0,sizeof(recv)); memset(send,0,sizeof(send)); if(fgets(send,sizeof(send),stdin) !=NULL) { write(sockfd,send,sizeof(send)); read(sockfd,recv,sizeof(recv)); fputs(recv,stdout); } } close(sockfd); return 0;}代码完整,可直运行 02-02 21:36