+ -
当前位置:首页 → 问答吧 → 有人用select玩OOB吗?

有人用select玩OOB吗?

时间:2010-08-31

来源:互联网


while {
    r = select(m, NULL, NULL, xset, NULL);
    ......
}
检测带外数据,有就进行一些处理,然后继续循环。
现象:一旦xset中被置位,那么每次select都会被置位,但recv返回-1,errno=EINVL。
环境:IBM AIX 5.3

在x86 Linux下一切正常。

作者: 一介村夫   发布时间: 2010-08-31

OOB是啥意思呢

作者: 雨过白鹭洲   发布时间: 2010-08-31

回复 雨过白鹭洲


    搜来的:

  传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.linux系统的套接字机制支持低层协议发送和接受带外数据.但是TCP协议没有真正意义上的带外数据.为了发送重要协议,TCP提供了一种称为紧急模式(urgent mode)的机制.TCP协议在数据段中设置URG位,表示进入紧急模式.接收方可以对紧急模式采取特殊的处理.很容易看出来,这种方式数据不容易被阻塞,可以通过在我们的服务器端程序里面捕捉SIGURG信号来及时接受数据或者使用带OOB标志的recv函数来接受.
  Intel® 主动管理技术 (Intel AMT) 就是使用的OOB.

作者: yylogo   发布时间: 2010-08-31