Linux C 网络编程——5. 并发服务器
来源:互联网 发布:mac版yy显示进频道失败 编辑:程序博客网 时间:2024/04/29 20:06
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编程指南
0 0
- Linux C 网络编程——5. 并发服务器
- Linux C 网络编程——5. 并发服务器
- Linux网络编程——tcp并发服务器(多线程)
- Linux网络编程——tcp并发服务器(多线程)
- Linux网络编程——tcp并发服务器(多线程)
- Linux网络编程——并发服务器模型
- linux c 网络编程 并发
- linux网络编程多进程并发服务器
- linux网络编程多进程并发服务器
- linux网络编程:并发服务器的模型
- Linux网络编程之高级并发服务器
- Linux网络编程之简单并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之简单并发服务器
- Linux网络编程之简单并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之高级并发服务器
- ZBar的使用
- QQ音乐的API
- 实现图片预加载的三大方法
- Linux C 网络编程——4. 简单TCP Socket程序
- 机器学习方法概论1
- Linux C 网络编程——5. 并发服务器
- C++四种cast操作符
- Linux C 网络编程——6. IO阻塞、非阻塞、复用、信号驱动、异步驱动
- 非阻塞通信之select模型
- list (仿sgi stl)
- TCP/IP笔记 一.综述
- 解决方案平台问题
- 算法复杂度分析
- adobe flash cc professional 2014 中文版