器件型号:DK-TM4C129X
工具/软件:TI-RTOS
在 NDK 手册中,fdPoll()对数据文件描述符交互进行了很好的描述,但似乎没有说明 fdPoll()如何处理侦听器 FD。 监视侦听器 FD 时 fdPoll()的语义是什么(要指定/检查哪些事件)? 使用 fdPoll()进行收听是否合法? 如果要查找 Pollin,然后尝试 ACCE()以使侦听器 FD 返回该事件,该怎么办?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号:DK-TM4C129X
工具/软件:TI-RTOS
在 NDK 手册中,fdPoll()对数据文件描述符交互进行了很好的描述,但似乎没有说明 fdPoll()如何处理侦听器 FD。 监视侦听器 FD 时 fdPoll()的语义是什么(要指定/检查哪些事件)? 使用 fdPoll()进行收听是否合法? 如果要查找 Pollin,然后尝试 ACCE()以使侦听器 FD 返回该事件,该怎么办?
您好、Leo、
是的、您可以在侦听套接字上使用 fdPoll。 这就是 NDK 的守护程序功能所做的。
您可以在函数 守护程序()函数的 ti/ndk/nettools/daemon /daemon.c 中看到此代码。
套接字设置为侦听第395行:
/*如果套接字绑定到 TCP,则开始侦听*/
if (dlec[i].s!= invalid_socket && dlec[i].Type!= sock_DGRAM)
{
if (listen (drec[i].s、drec[i].MaxSpawn)< 0)
对 fdPoll 的调用大约在第418行:
/*轮询超时为10秒-尝试获取*/
/*同步错误*/
if (fdPoll( pollitem,daemon_MAXRECORD,10000)== socket_error)
中断;
如果"一切正常"、则在插槽上调用"接受"、该插槽被确认:
if (pollitem[i].eventsDetected & Pollin)
{
if (dlec[i].Type == sock_DGRAM)
{
tsock = dlec[i].s;
closeSock = 0;
}
其他
{
tsock =接受( dlec[i],0,0);
closeSock = 1;
}
Steve