关闭

Windows CE下的非阻塞套接字编程

标签: windows编程socketnull任务
1198人阅读 评论(2) 收藏 举报
分类:

  我们知道Windows CE不支持PC版Windows可用的WSAAsync异步调用,不过我们仍然可以将套接字从默认的阻塞模式转换到非阻塞模式.在非阻塞模式下,所有可能需要等待成功执行其功能的套接字调用都会立刻返回WSAEWOULDBLOCK错误代码.接着我们可以在此后再次调用阻塞的函数来完成任务.

  可以使用ioctlsocket函数将套接字设置成非阻塞模式.

BOOL fBlocking = FALSE;

ioctlsocket(sock, FIONBIO, &fBlocking);

接下来我们可以使用select函数来等待套接字事件.

fd_set fdReadSocks;

FD_ZERO(&fdReadSocks);

FD_SET(hSock, &fdReadSocks);

int rc = select(0, &fdReadSocks, NULL, NULL, NULL);

if (rc != SOCKET_ERROR)

{

  if (FD_ISSET(hSock, &fdReadSocks))

    // A read event occurred in socket

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6167次
    • 积分:125
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论