我的服务器需要在客户端连接数据时发送数据。我正在使用Epoll ET模式。 但怎么办呢?有人可以给我一个简单的例子吗?
答案 0 :(得分:0)
假设您正在收听套接字(socket
,bind
,listen
),并将其描述符添加到epoll(epoll_create
和epoll_ctl
) ,然后epoll_wait
将告诉您何时有新的连接要接受。
首先接受连接(sockfd
是您正在侦听的套接字的描述符,efd
是epoll实例)并将其添加到您的epoll实例中:
int connfd = accept4(sockfd, NULL, 0, SOCK_NONBLOCK);
struct epoll_event ev;
ev.events = EPOLLOUT | EPOLLET;
ev.data.fd = connfd;
epoll_ctl(efd, EPOLL_CTL_ADD, connfd, &ev)
然后您返回主循环并再次致电epoll_wait
。它将告诉您套接字何时可以写入,并且您很高兴write
或sendfile
离开。
添加大量错误检查,可能TCP_CORK
已完成。 github.com/grahamking/netshare/上有一个有效的例子。
我希望这能为您提供足够的信息以便开始使用。