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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了套接字编程:如何处理带外数据相关的知识,希望对你有一定的参考价值。

[我只是研究了wikipedia's entry on out-of-band data,据我所知,OOB数据在某种程度上被标记为更重要并且被视为普通数据,但是以单独的流传输,这使我深深困惑。

实际的问题是((“有人可以解释什么是OOB数据吗?”):

我正在编写一个使用套接字的Unix应用程序,需要使用select(),并且想知道如何使用exceptionfds参数?我是否需要将所有套接字放入此参数并对这些事件做出反应?还是我只是忽略它们?

答案
我知道您已经决定不需要处理OOB数据,但是如果您曾经[[do关心OOB ...,请记住以下几点:

IPv4不会

    真正在单独的通道上或以不同的优先级发送OOB数据。它只是数据包上的一个标志。
  • OOB数据非常有限-1个字节!
  • OOB数据可以内联或分别接收,具体取决于套接字选项
  • 即使下一次读取不包含OOB数据,也可能发生OOB数据的“异常”信号(发送方的网络堆栈可能会标记任何已排队的数据,因此另一端会知道有OOB ASAP)。通常,这可以通过进入“排水”循环来处理,在该循环中,您将丢弃数据,直到实际的OOB数据可用为止。
  • 如果这看起来有点混乱和毫无价值,那是因为它主要是。有充分的理由使用OOB,但这很罕见。一个示例是FTP,其中用户可能正在进行大量传输,但决定中止。中止作为OOB数据发送。那时,服务器和客户端只需吃掉更多“正常”数据即可耗尽所有仍在传输中的数据。如果中止与数据一起进行内联处理,则所有未完成的流量都必须进行处理,仅进行转储。
  • 很高兴知道OOB存在以及它如何工作的基础,以防万一您确实需要它。但是,除非您只是好奇,否则不要从内到外学习它。您可能

    从不

    使用它。
  • 我想我在this page上找到了答案。简而言之:

    另一答案
    发送
    另一答案
    None

    以上是关于套接字编程:如何处理带外数据的主要内容,如果未能解决你的问题,请参考以下文章

    高性能网络编程 - select系统调用

    如何处理带空格的文件名?

    套接字将多个客户端编程到一台服务器

    如何用c语言编写socket套接字

    如何处理高传入数据并将受限制的数据发送到 django-channels 中的 Web 套接字

    Linux下的socket编程