#include "inet.h" #define EPORT 3001 void main() { int sockfd,newsockfd,childpid,clilen; struct sockaddr_in servaddr,cliaddr; if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) perror("socket error"); //bzero((char*)&servaddr,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port=htons(EPORT); if(bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0) perror("can't bind"); listen(sockfd,5); const int MAXLEN = 2048; cout << "\nEcho Server started...\n" << flush; while(1) { clilen=sizeof(cliaddr); newsockfd=accept(sockfd,(struct sockaddr*)&cliaddr,&clilen); if(newsockfd<0) perror("accept error"); if((childpid=fork())<0) perror(" fork error"); else if(childpid==0) { char buf[2048]; close(sockfd); while(1) { int n=recv(newsockfd,buf,MAXLEN,0); if(n==0) { break; } else if(n<0) { perror("recv error"); break; } buf[n]=0; cout << buf; if(send(newsockfd,buf,n,0)==-1) { perror("Send error"); break; } } exit(0); } close(newsockfd); } }