Linux:C/Socket多路复用select
来源:互联网 发布:js运行环境 编辑:程序博客网 时间:2024/05/20 18:49
Linux:C/Socket多路复用select 小全
Submitted byELFeron 2006, August 3, 5:46 PM.Unix/Linux
作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket
谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程完成
另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门:
取出来按编号找回原来发送者socket,发回给原来的客户端
还有一个就是处理线程(池),它取出请求队列里的一个请求,进行处理,
把处理结果放入结果队列
不知道有没有现成的框架?
网上只找到一些很。。。的:
http://fanqiang.chinaunix.net/a4/b7/20010508/112359.html
Linux网络编程--9. 服务器模型
http://linuxc.51.net 作者:hoyt (2001-05-08 11:23:59)
循环服务器:循环服务器在同一个时刻只可以响应一个客户端的请求
并发服务器:并发服务器在同一个时刻可以响应多个客户端的请求
9.1 循环服务器:UDP服务器
UDP循环服务器的实现非常简单:UDP服务器每次从套接字上读取一个客户端的请求,处理, 然后将结果返回给客户机.
可以用下面的算法来实现.
因为UDP是非面向连接的,没有一个客户端可以老是占住服务端. 只要处理过程不是死循环, 服务器对于每一个客户机的请求总是能够满足.
9.2 循环服务器:TCP服务器
TCP循环服务器的实现也不难:TCP服务器接受一个客户端的连接,然后处理,完成了这个客户的所有请求后,断开连接.
算法如下: