首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

关于socke的阻塞模式和非阻塞模式解决方案

2012-03-28 
关于socke的阻塞模式和非阻塞模式各位大侠新年好。。。最近在学习socket通信, 其中socket的阻塞通信和非阻塞

关于socke的阻塞模式和非阻塞模式
各位大侠新年好。。。最近在学习socket通信, 其中socket的阻塞通信和非阻塞通信 实在让小弟费解,求各位大侠给个TCP Socket阻塞通信、非阻塞通信,和UDP Socket阻塞通信、非阻塞通信的 解释,最好能给小弟给个实例。。

谢谢各位。

[解决办法]
假设掉用一个函数,去执行一些运算,需要花比较久的时间。

你调用它,它开始执行,经过那么久以后,它执行完,然后函数调用返回计算结果,代码再继续往下执行,这就是 阻塞式的调用。

如果你调用它,它开始执行,函数调用立刻返回,代码再继续往下执行,这就是 非阻塞。至于函数计算的结果,会在计算完后某个时刻,通过别的方式,比如调用另外一个你定义好的函数告诉你(常称为回调函数),或是发个什么消息/信号给你。


- 千里孤行
[解决办法]
阻塞: blocked 或者叫 pending 

比如一个接收函数 a() ,现在执行到a(); ,阻塞模式下 a() 一直不返回(去执行下一句) ,会一直等待,直到他接收到东西后就返回 去执行下一句 ,而非阻塞 的 a() 执行后就返回 无论他执行时是否接到 数据.

我这只是最通俗的理解,只希望帮助你理解! 班门弄斧了
yanghehong的解释就是你可以参考的

另外 我确切知道的 对于WinSock UDP (Windows Sockets v1.1 ):默认情况下recvfrom是阻塞的
你可以通过:

C/C++ code
int iMode = 1;ioctlsocket(lo_Socket,FIONBIO, (u_long FAR*) &iMode); 

热点排行