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

原创 2006年05月21日 15:03:00

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

}

写的非常不错的一篇阻塞与非阻塞、同步与异步套接字之间的区别

当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。 《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的...
  • fuyuehua22
  • fuyuehua22
  • 2014年07月30日 17:58
  • 2033

套接字IO模型

非阻塞套接字在进行可能阻塞的操作时会立即返回。下面几个模型中关键函数所做的工作就是:使用一定的机制确定当调用可能会阻塞的函数时不会被阻塞。 辅助函数说明: [cpp] view plai...
  • chenchong_219
  • chenchong_219
  • 2013年12月08日 12:41
  • 1081

Windows 套接字I/O 模型

windows提供了一些I/O 模型帮助应用程序以同步或者异步方式在一个或者多个套接字上管理I/O。大体上,这样的I/O 模型共有6 种。 阻塞(blocking)模型选择(select)模型W...
  • michaelenshi
  • michaelenshi
  • 2013年01月22日 15:24
  • 2163

Windows Socket 异步编程(非阻塞模式)

1. Windows平台提供了5种非阻塞Socket编程模型: Select模型(集合管理多个Socket,集合中有64个元素,可以管理1024个socket) WSAAsyncSelec...
  • du_bingbing
  • du_bingbing
  • 2017年07月02日 09:54
  • 286

套接字的阻塞和非阻塞send/recv

先理一下阻塞和非阻塞的概念: 阻塞就是让当前调用线程一直处于停止等待当中,挂起的状态,线程函数会被卡住。 非阻塞则是不管运行结果如何,都会继续往下执行(往往都要处理很多返回结果),线程函数里一般都是一...
  • shy_hc
  • shy_hc
  • 2017年04月10日 19:04
  • 1125

基于MFC的socket编程(异步非阻塞通信)

转载地址:http://blog.csdn.net/wangpei787636458/article/details/7055274。 对于许多初学者来说,网络通信程序的开发,普遍的一个现象...
  • ljsant
  • ljsant
  • 2016年09月03日 13:14
  • 1961

Socket的阻塞模式和非阻塞模式

阻塞模式   Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞...
  • wm_1991
  • wm_1991
  • 2016年08月09日 19:29
  • 1581

windows套接字编程

Windows系统提供的套接字函数通常封装在Ws2_32.dll动态链接库中,其头文件Winsock2.h提供了套接字函数的原型,库文件Ws2_32.lib提供了Ws2_32.dll动态链接库的输出节...
  • u014568921
  • u014568921
  • 2015年04月27日 17:53
  • 1530

socket阻塞与非阻塞模式

本文转载 http://blog.sina.com.cn/s/blog_63e164b00100mfvu.html 阻塞模式 Windows套接字在阻塞和非阻塞两...
  • yu_sn0w
  • yu_sn0w
  • 2015年11月27日 13:14
  • 1650

Linux socket编程之阻塞套接字和非阻塞套接字

每一个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小。当应用进程调用 write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区。如果套接口的发送缓...
  • yiziweiyang
  • yiziweiyang
  • 2016年08月11日 16:34
  • 1209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows CE下的非阻塞套接字编程
举报原因:
原因补充:

(最多只允许输入30个字)