第三部分 实现Reactor高并发服务器_哔哩哔哩_bilibili
这段代码中使用了四个套接字选项,我来为你解释一下每个选项的作用:
SO_REUSEADDR
12: 这个选项允许在bind()
时允许重用本地地址。这在一个服务器进程停止后想立即重启时非常有用,因为如果不设置这个选项,你可能会发现你想要绑定的地址还在被之前的服务器进程占用,导致无法立即重新绑定。TCP_NODELAY
34: 这个选项用于禁用 Nagle’s 算法,以减少网络延迟。Nagle’s 算法是一种改善网络效率的方法,它通过将小的数据包组合成大的数据包来减少网络负载。但是,这种方法可能会增加延迟,特别是在需要频繁发送小数据包的应用中。设置TCP_NODELAY
选项可以禁用 Nagle’s 算法,使得每次写入操作都会立即发送数据。SO_REUSEPORT
156: 这个选项允许多个套接字绑定到同一个端口。这样,内核可以将传入的网络流量分发到多个套接字,而不是只有一个套接字处理所有的网络流量。这可以提高服务器的性能,特别是在处理大量并发连接时。SO_KEEPALIVE
78: 这个选项用于在套接字连接上启用保活报文。如果启用了这个选项,系统会定期发送保活报文,以检测连接是否仍然有效。如果长时间没有收到对方的响应,系统会认为连接已经断开。
希望这些信息对你有所帮助!如果你还有其他问题,欢迎随时向我提问。😊
这段代码是在检查epoll事件的类型。EPOLLIN
和EPOLLPRI
是epoll事件的两种类型12。
在你的代码中,(evs[i].events & EPOLLIN | EPOLLPRI)
这个表达式的意思是检查evs[i].events
是否是EPOLLIN
或EPOLLPRI
。如果evs[i].events
是EPOLLIN
或EPOLLPRI
,那么这个表达式的值就为真,否则为假12。
希望这个解释能帮助你理解这段代码的含义。如果你还有其他问题,欢迎随时向我提问。😊