连接建立后如何在epoll ET模式下立即发送数据

时间:2012-09-29 15:12:26

标签: epoll

我的服务器需要在客户端连接数据时发送数据。我正在使用Epoll ET模式。 但怎么办呢?有人可以给我一个简单的例子吗?

1 个答案:

答案 0 :(得分:0)

假设您正在收听套接字(socketbindlisten),并将其描述符添加到epoll(epoll_createepoll_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。它将告诉您套接字何时可以写入,并且您很高兴writesendfile离开。

添加大量错误检查,可能TCP_CORK已完成。 github.com/grahamking/netshare/上有一个有效的例子。

我希望这能为您提供足够的信息以便开始使用。