LINUX网络编程之设计流程

来源:互联网 发布:iphone ssh 默认端口 编辑:程序博客网 时间:2024/05/17 03:06


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.



原创粉丝点击