检测理想的插座连接

问题描述 投票:1回答:1

我们有一个单线程服务器,该服务器使用epoll检测现有套接字连接上的新连接和传入数据。一切正常。

但是,我们不想保持理想的连接。如果在10秒内未收到任何数据,我们想断开连接。

epoll中是否有办法,如果一段时间内未接收到数据,则会生成事件。您可以推荐其他任何方式。请注意,服务器必须是单线程的,并且套接字的数量很大(10-20K)。

c linux epoll
1个回答
0
投票

epoll_wait(2) man page

int epoll_wait(int epfd, struct epoll_event *events,
               int maxevents, int timeout);

说明

timeout参数指定了毫秒数epoll_wait()将被阻止。时间是根据CLOCK_MONOTONIC时钟。通话将一直阻塞,直到以下任何一个:

  • 文件描述符传递事件;
  • 呼叫被信号处理程序中断;或
  • 超时到期。

返回值

成功后,epoll_wait()返回为请求的I / O准备的文件描述符的数量;如果在请求的[[timeout毫秒内没有文件描述符准备就绪,则返回零。发生错误时,epoll_wait()返回-1,并且errno设置正确。

通过超时并检查返回值。如果它为零,则epoll_wait()超时。
© www.soinside.com 2019 - 2024. All rights reserved.