0

我有一个 Red5 客户端实现,它发布流,从视频文件加载到我们的 wowza 媒体服务器。问题是,如果流名称很大——大约超过 90 个符号——客户端不会发布它并且会静默失败。客户端预期的所有其他操作都已完成:它连接到服务器并创建一个流。但从不发布流。我没有看到相应的 RTMP 消息,也没有在 wowza 的日志中看到相应的反应。

我尝试调试客户端并跟踪执行,直到它开始写入 SocketChannel。对于执行较短的命名流(可以发布)和具有长名称的流的情况,一切都是相同的,永远不会发送“发布”的 RTMP 命令。

一个问题是:

  1. 这是怎么回事?

  2. 如果我已经向 SocketChannel 写入了一些字节而没有抛出任何异常 - 它是否保证发送了相应的消息?

  3. 如果我已经向 SocketChannel 写入了一些字节而没有抛出任何异常 - 我可以通过我的操作系统(在我的情况下为 MACOS)检查这些字节是否真的写在某个地方?虽然我知道,通过 WireShark,这条数据从未发送过。

更新......这更奇怪 - 在发送“大”数据包之后发送一个较小的数据包并没有帮助。将更大长度的数据包提交到套接字后,将无法发送数据包。

4

1 回答 1

0

如果我已经向 SocketChannel 写入了一些字节而没有抛出任何异常 - 它是否保证发送了相应的消息?

它保证数据已在套接字发送缓冲区中本地缓冲,直到 write() 返回的计数。而已。

由于您无法发送更多数据,因此在我看来,接收器似乎没有读取大量数据。它是否可能因异常而失败并完全停止阅读?

于 2013-10-06T00:28:47.597 回答