c#.net的socket的blocking属性为true时有什么效果?

就是说blocking属性为true,看到MSDN解释是“处于阻止模式”,请讲一下阻止模式及相关知识,先谢过了。... 就是说blocking属性为true,看到MSDN解释是“处于阻止模式”,请讲一下阻止模式及相关知识,先谢过了。 展开
 我来答
光子炮
推荐于2018-03-28 · TA获得超过591个赞
知道小有建树答主
回答量:287
采纳率:100%
帮助的人:357万
展开全部
阻止(或阻塞)是指线程挂起等待直到操作完成。例如Receive方法,当没有数据可接受时,这个方法一直挂起等待,直到有数据返回。类似的有Console.ReadLine方法也是阻塞接收数据。你可以稍微调试一下就能发现和普通函数的区别了。

非阻止有几种方式,第一种是采用预先判定,调用一个可确定结果的非阻止方法。例如:
if(socket.DataAvailable){ //预先判定,有数据才调用receive
socket.Receive(...); //有数据,这个方法立即执行
}
第二种是使用异步,把receive方法放到另外一个线程上执行,直到有数据返回。注意这种方法本质上还是阻止的,只不过组止的是另一个线程而非主线程。
第三种方法是使用超时判定,即如果x秒内还没有数据,方法就返回或抛异常:
socket.ReceiveTimeout = 3000; //超时值
try{
socket.Receive(...); //超过三秒还没有数据返回就跑出异常
}catch...
jawry
2012-09-04 · TA获得超过1519个赞
知道答主
回答量:325
采纳率:0%
帮助的人:170万
展开全部
阻塞?
阻塞=同步
非阻塞=异步。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式