socket select

    如果你不喜欢或者不能让socket阻塞工作,那可以如下改进:1.使用非阻塞然后自己去查询EWOULDBLOCK, 2.使用select模型,3.使用多线程。

    当然,windows下有更多选择WM异步甚至完成端口。

    我以前也贴过select的代码,但是还是每次看到它都想说点什么,大概是真的不常用加上我觉得很多人会对他有神秘感而想体验一下而遇到问题得原因吧。

    select是一种查询,查询我所询问的socket上有没有应该处理的事件,当然,由于berkely socket内部没有区分连接socket和数据socket,所以你要自己处理事件是连接还是数据,好在这没什么难的,你自己建立的socket你一定知道它是哪个类型。

    注意:查询我所询问的socet上有没有应该处理的事件。这有几个问题:

    1.我所询问,那这个询问是如何投放的。

    使用FD_SET可以将指定一个socket添加到特定的兴趣集fl_set里。(注意区分大小写,大写的是方法,小写的是一个结构)。

    2.如何询问。

    这个很简单,就是使用select方法了。

    3.如何分析询问到的结果。

    可以用FD_ISSET查询特定一个socket是否在有事件的fd_set集里。

    4.注意,使用前一定要清理并初始化。

    清理使用FD_ZERO,初始化就是添加新的socket了,对,使用FD_SET。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值