help3:关于带外数据的疑问?欢迎大家讨论!

COM_MOC 2002-11-21 04:54:43
请问带外数据究竟是怎样一个概念?
怎样标识一个带外数据呢?
又怎样获得这些带外数据呢?
用setsockopt设置套接口选项SO_OOBINLINE之后,发送的数据就是带外数据了吗?
...全文
23 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
everwindforce 2002-11-22
  • 打赏
  • 举报
回复
带外数据(OOB )在不同的协议中有不同的含义。一般来说,协议利用已建立的通信连接来发送OOB数据。OOB数据可能与已发送的正常数据同序。插口层支持两种与协议无关的机制来实现对OOB数据的处理:标记和同步。

发送进程通过在sendxxx调用中设置MSG_OOB标志将数据标记为OOB数据。sosend将
这个信息传递给插口协议,插口层收到这个信息后,对数据进行特殊处理,如加快发送数据或使用另一种排队策略。

当一个协议收到OOB数据后,并不将它放进插口的接收缓存而是放在其他地方。进程通过设置recvxxx调用中的MSG_OOB标志来接收到达的OOB数据。

另一种方法是,通过设置SO_OOBINLINE插口选项,接收进程可以要求协议将OOB数据放在正常的数据之内。当SO_OOBINLINE被设置时,协议将收到的OOB数据放进正常数据的接收缓存。在这种情况下, MSG_OOB不用来接收OOB数据。读调用要么返回所有的正常数据,要么返回所有的OOB数据。两种类型的数据从来不会在一个输入调用的输入缓存中混淆。进程使用recvmsg来接收数据时,可以通过检查MSG_OOB标志来决定返回的数据是正常数据还是OOB数据。
zfive 2002-11-22
  • 打赏
  • 举报
回复
recv和send最后一个参数

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧