一、实现并发的方法
1. 多进程,多线程,线程池
二、使用多进程实现并发
int main(){
int sockfd , newfd ;
char buffer[128] ;
int nbyte ;
struct sockaddr_in server_addr ;
struct sockaddr_in client_addr ;
if( -1==(sockfd=socket(AF_INET,SOCK_STREAM,0)) ){
printf("create socket error! \n") ;
exit(1) ;
}
bzero(&server_addr,sizeof(struct sockaddr_in)) ;
server_addr.sin_family = AF_INET ;
server_addr.sin_port = htons(PORTNUM) ;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY) ;
bind(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr)) ;
listen(sockfd,5) ;
int pid ;
while(1){
int size = sizeof(struct sockaddr) ;
newfd = accept(sockfd,(struct sockaddr *)(&client_addr),&size ) ;
printf("server get connect from :ip:%s\n",inet_ntoa(client_addr.sin_addr)) ;
if( 0==(pid=fork()) ) {
nbyte = recv( newfd , buffer , 127 , 0 ) ;
buffer[nbyte] = '\0' ;
printf( "server received is : %s \n",buffer ) ;
close(newfd) ;
close(sockfd) ;
exit(0) ;
}else if(pid<0) {
printf("fork error\n") ;
}
}
close(sockfd) ;
return 0 ;
}