17-并发服务器设计(并发、同步、互斥的区别)

来源:互联网 发布:开源直播app源码 编辑:程序博客网 时间:2024/06/16 22:27

    • 一实现并发的方法
    • 二使用多进程实现并发

一、实现并发的方法

    1. 多进程,多线程,线程池

二、使用多进程实现并发

#define PORTNUM 5555int 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 ;}
0 0