每次运行客户程序,在命令行参数指定服务器的ip地址,端口,发起连接的子进程数,和一个待发送的字符串数据,客户程序将模拟多个客户根据指定的子进程数创建子进程来并发的连接到服务器,并发送数据,服务器收到数据后都原样的回发给客户,是一点典型的回射服务器。
在处理完成某个客户的请求之后才转向下一个客户,比较少见,虽然总的服务时间稍慢,但需要进程控制
每个客户fork出一个子进程并发的去处理请求,总服务器时间稍短,fork子进程比较耗费CPU时间
与之前的每一个客户请求临时fork一个进程处理不同,在启动的时候就fork出一些子进程,优点是节省了临时fork的开销,缺点是父进程在启动阶段要先知道预先派生的子进程数,如果连接较多而无可用子进程,那么客户请求超过了连接排队数就可能会被忽略
因为某些内核实现中不允许多个进程引用对同一个监听套接字调用accept,所以对accept加锁成为原子操作为对上一种模型的改进
与上一模型类似,采用多进程间共享线程锁进行的方式对预先派生进程服务器的改进
主进程中accept后将已连接的套接字通过进程间通信的方式传递给预先派生的空闲进程,预先派生的进程处理完成后向主进程发送消息,主进程负责维护所有预先派生进程的状态以及可用数目
对于每一个客户请求创建一个线程来处理,与多进程并发服务器相比,创建线程比创建进程的开销更低