带有带外数据的Java套接字

有人知道如何使用Java套接字接收(如何知道您收到的)带外数据? 特别是我已经阅读了sendUrgentData和setOOBInline的文档,其中说明:

请注意,仅提供有限的支持来处理传入的紧急数据。 特别是,没有提供传入紧急数据的通知,除非由更高级别的协议提供,否则无法区分正常数据和紧急数据。

但我仍然希望有人有解决方案:-)

更多细节:

我正在通过套接字发送序列化对象,我并没有真正看到如何在流中找到插入“随机”OOB字节(除了Java在我尝试反序列化时会给我一个例外的事实宾语)。

Tomcat有一个JNI套接字的维护实现,它可以以OOB方式读取紧急数据包。

它看起来像Java,直到Java 6(我没有调查Java 7,因为我不知道他们是否确定了将要进行的内容)并且看起来Java根本没有提供任何支持以带外方式读取紧急TCP信息。 到目前为止看起来这是一个慎重的选择。

但是,我确实发现一个用户使用JNI 实现了自己的解决方案,成功地从流中读取紧急数据。 这个hack很老,可能会或可能不会在最近的JDK上运行。 我自己没试过! 你的milage可能会有所不同。 :)但希望这会对你有所帮助。