标签归档:网络

多路 io 转接模型 select/poll

多路io转发服务器模型也是为了解决大并发多客户端场景下的问题,比多进程、多线程开销要少。多进程多线程常规情况下都是使用 accept 或 read 函数在阻塞等接收客户端发送过来的数据,而多路io模型则是提供了一个系统函数,该函数负责阻塞判断各路被监控的文件描述符是否有数据读取或写入操作,当有数据读取或写入时再让 accept 或 read 去直接处理从而不会阻塞,系统函数可能会同时返回多个有数据的文件描述符等待后面的代码处理,所以效率上要比多进程和多线程同时只在一个位置阻塞获取数据效率要高一些,下面就介绍一下多路 io 模型 select 和 poll,poll 模型较 select 模型还存在一些优势,在本文后面将介绍。 继续阅读

socket 多进程/多线程模型实现

前文我们实现了一个 socket 最小的实现,它只允许一台终端连接到服务器进行数据通信,但这样的程序对我们来说没有什么意义,所以我们一定要实现多个客户端与一个服务端通信交互数据,这样才能真正派上用场,所以本文主要介绍了两种实现多客户端连接的方案,一种是多进程,一种是多线程,两种性能相差无几,但明显多线程在资源方面明显要比多进程消耗要少的多。 继续阅读

linux/unix socket 最简单实例演示

今日开始接触 socket 网络编程,下面实例演示了服务器和客户端创建连接的流程,以及 socket 编程中需要使用的常见函数的使用方法。我们遵循下图的案例编写了一个服务端和一个客户端,目的只为写清楚每个函数的使用方法,所以只支持了一个客户端,也可以在 accept 后创建新的线程来维护客户端之间的通讯。具体参见图片和代码。 继续阅读