首页 > 解决方案 > 如何连接到 liblo TCP OSC 服务器?

问题描述

我现在通过 UDP 使用liblo进行 OSC 通信(低级 API)有一段时间了,我目前正在尝试切换到 TCP。但是,我无法理解如何使用 TCP 库。echoserver演示如何设置服务器。基本上,我这样做:

_tcpThread = lo_server_thread_new_with_proto( "7000", LO_TCP, errorHandler );
_tcpServer = lo_server_thread_get_server( _tcpThread );
lo_server_thread_start( _tcpThread );

_address = lo_address_new_with_proto( LO_TCP, "127.0.0.1", "7000" );
lo_send_message_from( _address, _tcpServer, "/test", message );

现在,如何创建一个连接到 TCP 套接字并接收发送的 OSC 包的客户端?文档和示例代码让我摸不着头脑。在客户端创建第二个服务器?我如何告诉它连接到哪里?


编辑:好的,我现在发现lo_send_message_from实际上想要目标地址作为第一个参数。由此我推断我必须遍历所有连接的客户端并发送到相应的套接字。问题仍然存在,我应该将谁连接到服务器?第二个问题出现了,我怎么知道我可以将包裹发送到哪些客户端?

标签: network-programmingosc

解决方案


好的,所以我在此期间想通了,我又是那个回答他自己问题的人,但它可能对某人有用:

似乎混淆的原因是在 OSC 中,术语“服务器”是指将数据发送到的对等方,而“客户端”是指提供数据的对等方,反之亦然。一旦你知道了,当查看我在问题中提到的 echoserver 示例时,一切都很容易:你打开一个“服务器”套接字lo_server_thread_new_with_proto并等待数据,例如通过注册回调lo_server_add_method。客户端创建一个地址lo_address_new_with_proto并将其用于lo_send,在这种情况下,如果尚未建立 TCP 连接,则建立 TCP 连接。


推荐阅读