LINUX网络编程之设计流程


1/基于多进程并发的面发连接服务器软件的设计(TCP)

           (1) 不固定进程数的并发模型设计流程

            步骤1.主进程利用Socket创建主套接字server_socket并绑定到熟知的端口号。

            步骤2.主进程调用accept()函数在熟知的端口号上等待客户端的连接。

            步骤3.当有客户端请求到达是,主进程建立与该客户之间的通信连接,这是accept()返回一个用于该连接的从套接字new_socket.

           步骤4.主进程创建一个新的从进程来处理该连接。

           步骤5.主进程关闭套接字new_socket(此时,由于从进程中仍然打开着从套接字,故主进程的关闭操作仅仅只是把从套接字new_socket的引用计数减1,而不是真正关闭该从套接字)。

          步骤6.主进程返回步骤2(继续等待客户端的连接)。

          步骤7.从进程关闭主套接字server_socket,(此时,由于主进程中仍然打开着主套接字,故主进程的关闭操作仅仅只是把从套接字server_socket的引用计数减1,而不是真正关闭该主套接字)。

          步骤8.从进程调用recv()和send()等操作与客户端进行数据交换。

          步骤9.数据交互结束,从进程关闭从套接字new_socket.从进程结束。


       (2)固定进程数的并发模型设计

        1/父进程的设计流程

         步骤1.主进程创建主套接字server_socket并绑定到熟知端口。

         步骤2.主进程创建给定数目的从进程。

         步骤3.主进程调用wait()或者waitpid()等待从进程结束,一旦有从进程退出,则主进程立马创建一个新的从进程,以保证从进程在数量上维持不变。


       2/从进程的设计流程

        步骤1.从进程调用accept()等待客户端的连接。

        步骤2.当有客户端请求连接到达时,从进程维持与该客户端的通信连接,同时accept()调用返回一个新的从套接字new_socket.

       步骤3.从进程调用recv()和send()等操作与客户端进行数据交互。

       步骤4.数据交互结束,从进程关闭从套接字new_socket.

       步骤5.返回步骤1.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值