• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

技术天地

VC中socket程序中设置阻塞和非阻塞

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/2019/0702/561.html

 
    关于阻塞和非阻塞概念,可能有些初学编程的人不是很分明.
 
    阻塞是指在函数执行时假如条件不满足,程序将永远停在那条函数那里不在往下执行,而非阻塞则是函数不论条件能否满足都会往下执行.例如在通讯过程中,当接纳数据的时分,关于阻塞方式,程序将不断等到接纳到数据才向下执行,而关于非阻塞方式,不论能否接纳到数据,接纳函数将被执行过去.一个比拟完善的程序普通来讲都运用非阻塞的方式来停止.缘由在于假如采用阻塞方式,程序将停在那里不断等候条件满足,正常状况下是没有问题的,但假如你想中止阻塞的程序,就呈现了比拟费事的问题.
 
    关于VC中运用API方式停止的SOCKET编程,需求运用下面的函数来设置阻塞方式和非阻塞方式:
 
     ioctlsocket(gListenSocket, FIONBIO,&tBlockMode);   //tBlockMode 0--block,1--no block
 
     ioctlsocket(gWorkSocket, FIONBIO,&tBlockMode); 
 
     留意,在开发server端程序时,这样设置会控制监听socket的accept()函数的阻塞和非阻塞形式,也能够设置工作socket的recv函数的阻塞和非阻塞形式.设置了非阻塞形式,能够运用查询方式停止accept和recv函数执行.
 

上篇:上一篇:MFC应用开启 xp/vista/win7 可视化,只需一行代码
下篇:下一篇:C++中map的用法详解