#include<iostream> #include <stdlib.h> #include "unistd.h" #include <errno.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/wait.h> using std::cin; using std::cout; using std::endl; void sig(int signal){ int ch_pid; int sta; while(ch_pid=(waitpid(-1,&sta,0)>0)){} } int main(){ signal(SIGCHLD,sig); int listenfd,confd; pid_t pid; socklen_t c_len; listenfd=socket(AF_INET,SOCK_STREAM,0); struct sockaddr_in cliaddr,serveraddr; bzero(&serveraddr,sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); serveraddr.sin_port = htons(4546); bind(listenfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); listen(listenfd,0); while(true){ confd = accept(listenfd,(struct sockaddr*)&cliaddr,&c_len); cout<<"accept"<<endl; if((pid=fork())==0){ close(listenfd); write(confd,"hello , I am Server ! n ",100); close(confd); exit(0); return 0; } cout<<"receiv "<<endl; close(confd); } return 0; }
|
近期评论