之前写了一些版本 ,但没有加入io复用,感觉效率很低,这次加入epoll轮询。
如果对服务器编程模型有些经验,便会发现在epoll机制运用了很巧妙的思想,当epoll_wait得到并发的事件源后,依靠event.data.fd区分是被 监听的服务器socket描诉符还是接受连接后新的描诉符,如果是被监听的socket有事件发生,就需要接受请求并将accept得到的新的描诉符重新加入epoll事件列表。否则如果是针对EPOLLIN可读事件,就需要对该描述符进行相应的io操作。这个过程最需要注意的,就是在客户端和服务器段的io操作,应该尽量减少产生io数据,read和write这样会导致内核陷入的api应该慎重使用,一般应当用recv和send予以操作,具体细节请参考零复制的相关知识。如果