WEB开发网
开发学院操作系统Linux/Unix TCP/IP 应用程序的通信连接模式 阅读

TCP/IP 应用程序的通信连接模式

 2008-08-23 08:18:32 来源:WEB开发网   
核心提示: 图 6 利用一对一 Client-Server 模式实现多 Client 连接使用多个 accept() 实现多 Client 连接 多进程 Server 一般有一个专注进程是服务于每一个连接的,当 Client 端完成连接后,TCP/IP 应用程序的通信连接模式(6),专注进程可以循环被

图 6 利用一对一 Client-Server 模式实现多 Client 连接

TCP/IP 应用程序的通信连接模式

使用多个 accept() 实现多 Client 连接

多进程 Server 一般有一个专注进程是服务于每一个连接的。当 Client 端完成连接后,专注进程可以循环被另外的连接使用。使用多个 accept() 也可以实现处理多 Client 连接。多 accept() 的 Server 也只有一个 socket(),一个 bind(),一个 listen(),这与通常情况一样。但是它建立许多工作子进程,每一个工作子进程都有 accept(),这样可以为每一个 Client 建立 socket 描述符。如图 7 所示,由于 accept() 连接成功后,会产生一个新的 socket 描述符,这样通过循环多进程利用 accept() 产生的多 socket 描述符就可以与多个 Client 进行连接通信。循环体是从 accept() 开始到 close() 结束的。

图 7 使用多 accept() 实现多 Client 连接

TCP/IP 应用程序的通信连接模式

使用并发 Server 模式实现多 Client 连接

并发服务器模式曾经是 TCP/IP 的主流应用程序设计模式,得到广泛使用,目前互联网上仍有相当多的应用使用此种模式。其设计思路是在 accept 之后 fork 出一个子进程。因为 socket 会产生监听 socket 描述符 listenfd,accept 会产生连接 socket 描述符 connfd。连接建立后,子进程继承连接描述符服务于 Client,父进程则继续使用监听描述符等待另外一个 Client 的连接请求,以产生另外一个连接 socket 描述符和子进程。如图 8 所示,accept() 接收到一个 Client 连接后,产生一个新的 socket 描述符,通过 fork() 系统调用,用一个子进程来处理该 socket 描述符的连接服务。而父进程可以立即返回到 accept(),等待一个新的 Client 请求,这就是典型的并发服务器模式。并发服务器模式同时处理的最大并发 Client 连接数由 listen() 的第二个参数来指定。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:TCP IP 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接