0

我正在尝试使用 lacewing 和用于 android 设备的多媒体融合 2 为我的朋友制作一个聊天程序的端口。

我已经成功创建了一个连接到服务器监听套接字的套接字,但我似乎无法发送数据登录并进入聊天。现在登录只需要一个名称,但即使我发送一个数据字符串,服务器似乎也不会回复或接受该数据来让我通过频道。

我知道我可以用其他方式轻松移植它,比如使用多媒体融合 2 导出器的 NDK,但我只想弄清楚它是如何工作的

PS:我正在使用 Java 和 libgdx 进行开发

4

1 回答 1

0

您需要阅读 liblacewing 中继协议: https ://github.com/udp/lacewing/blob/0.2.x/relay/current_spec.txt

在初始连接时,您必须发送字节 0 来标识您不是 HTTP 客户端。在此之后,您可以交换正常的协议消息。

您需要发送的第一条消息是连接请求(服务器可能会使用拒绝消息拒绝该请求)。这将是:字节 0(2.1.0 请求)(1.2 大小)字节 0(2.1.0.0 连接请求)字符串“修订 3”(2.1.0.0 连接请求 -> 版本)

当服务器以响应 0 (2.2.0.0 Connect) 响应时,您必须先设置名称,然后才能加入任何频道。这是通过消息 2.1.0.1 SetName 完成的,它与上面的结构相同,但不是 2.1.0.0 的字节 0,而是 2.1.0.1 的字节 1,后跟名称作为字符串而不是协议版本.

然后服务器应该以 2.2.0.1 SetName 响应,假设它接受了您的名称更改请求。如果服务器给您的名称与您请求的名称不同,您应该处理此消息。最后,一旦有了名字,就可以使用 2.1.0.2 JoinChannel 加入频道。如果频道尚不存在(例如,还没有人在聊天中),将使用您在此处指定的标志 - 这些应该与 MMF2 项目文件中的标志相匹配。名称也应该匹配。

毕竟,你还没有完成!您必须处理更多消息等。这几乎就像自己编写 RelayClient 类一样。这是一项艰巨的任务,但有了协议规范,您应该能够完成所有工作。

于 2013-04-08T16:47:52.677 回答