我刚刚查看了维基百科关于带外数据的条目,据我了解,OOB 数据以某种方式被标记为更重要并被视为普通数据,但以单独的流传输,这让我深感困惑。
实际的问题是(除了“有人可以解释什么是 OOB 数据吗?”):
我正在编写一个使用套接字并需要使用select()的 unix 应用程序,并且想知道如何处理 exceptfds 参数?我是否需要将所有套接字放入此参数并对此类事件做出反应?还是我只是忽略它们?
我刚刚查看了维基百科关于带外数据的条目,据我了解,OOB 数据以某种方式被标记为更重要并被视为普通数据,但以单独的流传输,这让我深感困惑。
实际的问题是(除了“有人可以解释什么是 OOB 数据吗?”):
我正在编写一个使用套接字并需要使用select()的 unix 应用程序,并且想知道如何处理 exceptfds 参数?我是否需要将所有套接字放入此参数并对此类事件做出反应?还是我只是忽略它们?
我知道您已经决定不需要处理 OOB 数据,但是如果您确实关心 OOB,请记住以下几点...
如果这看起来有点令人困惑和毫无价值,那是因为它主要是。使用 OOB有充分的理由,但这种情况很少见。一个示例是 FTP,其中用户可能正在进行大量传输,但决定中止。中止作为 OOB 数据发送。那时,服务器和客户端只是吃掉任何进一步的“正常”数据,以耗尽仍在传输中的任何东西。如果中止是与数据一起处理的,那么所有未完成的流量都必须被处理,只是被转储。
很高兴知道 OOB 的存在以及它的工作原理,以防万一您确实需要它。但是除非你只是好奇,否则不要费心从里到外学习它。你可能永远不会使用它。
我想我在这个页面上找到了答案。简而言之:
如果我不发送任何 OOB 数据,我不需要在接收端处理 OOB 数据。我原以为 OOB 数据可以由发件人的操作系统生成。
即使您正在发送它,您也不需要在接收端处理它 - OOB 数据在所有情况下都会被透明地忽略,除非您主动接收它。