Linux C 网络编程——5. 并发服务器

来源:互联网 发布:淘宝水果店招图片大全 编辑:程序博客网 时间:2024/04/29 09:40

1. 原理

Linux C 网络编程——4. 简单TCP Socket程序中实现了一个最基本的基于TCP的CS通信,

这里介绍一种可以允许Server端可以同时处理多个请求(并发服务器)。

原理:每次accept服务器调用fork(),创建一个子进程处理请求。


2. 实现

只需要修改上一篇文章中的Server.c的while循环即可

while(1){addr_len = sizeof( caddr );  connfd = accept( listenfd, (struct sockaddr*)&caddr, &addr_len ); n = fork();if( n == -1 ){perror("call to fork");exit(1);}else if( n == 0 )  //child process {close( listenfd );while(1){n = recv( listenfd, buf, 100, 0  );    printf("Recive from %s : %d \n",  inet_ntop( AF_INET, &caddr.sin_addr, str, sizeof(str) ), ntohs(caddr.sin_port) );    for(i=0; i<n; i++)  {  buf[i] = toupper( buf[i] );  }    //write( connfd, buf, n+1 );  send( connfd, buf, n+1, 0 );    printf("Send : %s \n", buf);  close( connfd );  }//while}//else// father process{close( connfd );}}//while  -- father


3. 参考

[1] Linux C编程一站式学习

[2] Linux 环境下C编程指南

原创粉丝点击