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

  我们知道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

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值