Skip to content

使用 I/O 多路复用函数 select、poll、epoll 和 kqueue 以及 libevent 库,各自实现 echo 服务的示例代码

Notifications You must be signed in to change notification settings

yulewei/io-multiplexing-demo

Repository files navigation

使用 I/O 多路复用函数 selectpollepollkqueue 以及 libevent 库,各自实现 echo 服务的示例代码。

编译代码:

cmake .
make

启动不同实现版本的 echo 服务:

# 启动使用 fork 模式实现的 echo 服务,阻塞模式 I/O,每个客户端请求由单独创建的子进程处理
./bulid/echo_server_fork
# 启动使用 select 函数实现的 echo 服务
./bulid/echo_server_select
# 启动使用 poll 函数实现的 echo 服务
./bulid/echo_server_poll
# 启动使用 epoll 相关函数实现的 echo 服务(Linux 专用)
./bulid/echo_server_epoll
# 启动使用 kqueue 相关函数实现的 echo 服务(*BSD 专用)
./bulid/echo_server_kqueue
# 启动使用 libevent 库实现的 echo 服务(跨平台)
./bulid/echo_server_libevent

客户端连接服务器的 8080 端口:

nc 127.0.0.1 8088
hello
> hello
world
> world

所谓 echo 服务,即服务端接收到客户端的字符串输入,然后响应相同的字符串(为了方便区分响应字符串加了 > 前缀)。 比如,如果客户端输入字符串 hello,服务端将响应字符串 > hello;如果客户端输入字符串 world,服务端将响应字符串 > world


参见:I/O 多路复用与网络服务器并发策略 https://nullwy.me/2023/07/io-multiplexing-network-server/

About

使用 I/O 多路复用函数 select、poll、epoll 和 kqueue 以及 libevent 库,各自实现 echo 服务的示例代码

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published