代码之家  ›  专栏  ›  技术社区  ›  soulmerge

套接字编程:如何处理带外数据

  •  20
  • soulmerge  · 技术社区  · 15 年前

    我只是调查了一下 wikipedia's entry on out-of-band data 据我所知,OOB数据在某种程度上被标记为更重要的数据,并被视为普通数据,但在一个单独的流中传输,这让我深感困惑。

    我正在编写一个unix应用程序,它使用套接字并需要利用 select()

    4 回复  |  直到 15 年前
        1
  •  32
  •   peterh Eli    4 年前

    关心OOB。。。

    • IPv4没有 真正地 在单独的通道上或以不同的优先级发送OOB数据。它只是包上的一个标志。
    • OOB数据可以内联接收,也可以单独接收,具体取决于套接字选项
    • 即使下一次读取不包含OOB数据,也可能发生“异常”信令OOB数据(发送方的网络堆栈可能会标记任何已排队的数据,以便另一方尽快知道存在OOB)。这通常是通过进入一个“排放”循环来处理的,在该循环中,您将丢弃数据,直到实际的OOB数据可用为止。

    如果这看起来有点混乱和毫无价值,那是因为它基本上是。那里 使用OOB有很好的理由,但很少。一个例子是FTP,其中用户可能处于大传输的中间,但决定中止。中止作为OOB数据发送。在这一点上,服务器和客户机只需吃掉任何进一步的“正常”数据,就可以排出任何仍在传输中的数据。如果中止是与数据一起处理的,那么所有未处理的通信量都必须被处理,只能被转储。

    意识到OOB的存在以及它如何工作的基础是很好的,以防你需要它。但是,除非你只是好奇,否则不要费心从里到外学习。机会是不错的,你可以 从不 使用它。

        2
  •  3
  •   soulmerge    5 年前

    this page

    如果我不在接收端,我不需要处理OOB数据 发送

        3
  •  0
  •   anon anon    15 年前

    发送它-OOB数据在任何情况下都会被透明地忽略,除非您主动开始接收它。

    推荐文章