size = sl_Recv(iNewSockID, revBuff, 1460, 0);
非阻塞模式怎么一直在这等待?
例程里面的程序
iStatus = sl_SetSockOpt(iSockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING,
&lNonBlocking, sizeof(lNonBlocking));
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.
size = sl_Recv(iNewSockID, revBuff, 1460, 0);
非阻塞模式怎么一直在这等待?
例程里面的程序
iStatus = sl_SetSockOpt(iSockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING,
&lNonBlocking, sizeof(lNonBlocking));
试了下,貌似要把iSockID换成iNewSockID。
那么问题来了,为什么要用iNewSockID?
while (iNewSockID < 0) {
// accepts a connection form a TCP client, if there is any
// otherwise returns SL_EAGAIN
iNewSockID = sl_Accept(iSockID, (struct SlSockAddr_t *) &sAddr,
(SlSocklen_t*) &iAddrSize);
例程里面SL_EAGAIN又是怎么回事?晕啊
你做为TCP服务器的话,你自己需要创建一个套接字,你接收到一个连接后就又创建一个新的套接字。
SL_EAGAIN代表这次没有客户端来连接,所以需要你再去调用来等待客户端的连接。