out-of-band data 带外数据

来源:互联网 发布:淘宝企业店铺能过户吗 编辑:程序博客网 时间:2024/06/12 03:43
out-of-band data 带外数据
  带外数据(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);//带外数据通常就一个字符