带外数据(out—of—band data),有时也称为加速数据(expedited data), 是指连接双方中的一方发生重要事情,想要迅速地通知对方. 这种通知在已经排队等待发送的任何“普通”(有时称为“带内”)数据之前发送. 带外数据设计为比普通数据有更高的优先级,带外数据是映射到现有的连接中的,而不是在客户机和服务器间再用一个连接。
Socket编程,select 函数
int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *exceptset,const struct timeval *timeout); maxfdp1 : 描述字最大值 readset : 读描述字集 writeset : 写描述字集 exceptset : 异常条件的描述字集 timeout : 等待时间 readset, writeset和exceptset:让内核测试读、写和异常条件所需的描述字。
|
为这三个参数的每一个指定一个或多个描述字集,其中,exceptset异常条件待处理,如果一个套接口存在带外数据或者仍处于带外标记,那它有异常条件待处理.
带外数据只能用于流套接口,它是利用了tcp字段中的紧急数据字段来实现的, 按上面的方法可以进行带外数据的接收,在检测到有异常条件时使用recv(..., MSG_OOB)来进行数据接收。
发送带外数据可以这样:
send(sclient, buf, 1, MSG_OOB);//带外数据通常就一个字符
阅读(1562) | 评论(0) | 转发(0) |