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

一、实现并发的方法

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

二、使用多进程实现并发

#define PORTNUM 5555

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 ;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值