终于移植过去了, 在此感谢TI的工程师和各位网友。
今天调试select 发现 好像这个不能监听原始的socket
tcpSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
就是这个socket、 如果可以监听这个socket,那么应该就可以监听 tcp是不是有客户端连接事件产生了。但是测试了一晚上,发现貌似咩用。
但是可以监听accept返回的socket。
还有一个select的源码 感觉有点疑问
if (tParams.iStatus >= 0)
{
if (readsds)
{
memcpy(readsds, &tParams.uiRdfd, sizeof(tParams.uiRdfd));
}
if (writesds)
{
memcpy(writesds, &tParams.uiWrfd, sizeof(tParams.uiWrfd));
}
if (exceptsds)
{
memcpy(exceptsds, &tParams.uiExfd, sizeof(tParams.uiExfd));
}
return(tParams.iStatus);
}
else if(tParams.iStatus < 0)
{
errno = tParams.iStatus;
return(-1);
}
如果是超时,状态(tParams.iStatus)应该是0。 在运行memcpy的时候 是会把fd_set 这个位图给清零吧!