network-programming - 如何连接到 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
实际上想要目标地址作为第一个参数。由此我推断我必须遍历所有连接的客户端并发送到相应的套接字。问题仍然存在,我应该将谁连接到服务器?第二个问题出现了,我怎么知道我可以将包裹发送到哪些客户端?
解决方案
好的,所以我在此期间想通了,我又是那个回答他自己问题的人,但它可能对某人有用:
似乎混淆的原因是在 OSC 中,术语“服务器”是指将数据发送到的对等方,而“客户端”是指提供数据的对等方,反之亦然。一旦你知道了,当查看我在问题中提到的 echoserver 示例时,一切都很容易:你打开一个“服务器”套接字lo_server_thread_new_with_proto
并等待数据,例如通过注册回调lo_server_add_method
。客户端创建一个地址lo_address_new_with_proto
并将其用于lo_send
,在这种情况下,如果尚未建立 TCP 连接,则建立 TCP 连接。
推荐阅读
- replace - LoadHTML & SaveHTML 无意循环
- cakephp - cakePHP 3.10 - 当不使用“默认”数据库连接时......控制器找不到 Flash!cakePHP 正在跳过 AppController->initialize()
- google-chrome - Chrome 商店重定向到哪里?
- amazon-web-services - AWS IAM 角色,允许更新/删除自己的分配
- java - 如何制作一种方法来检查一个数字是否与一个奇数和另一个偶数混合
- java - Java Boolean ...尽管布尔值发生变化,如何保持指向相同的引用
- python - 用于 75K 数据包/秒负载下的实时应用程序的 python 网络嗅探器
- python - 是什么导致了错误:Kivy 中的“警告,在下一帧之前完成了太多迭代”?
- arrays - 反应redux如何从状态数组中删除对象
- c# - 我在 C# 中遇到问题,当我尝试用黑色填充整个 8x8px .bmp 文件时,它什么也没做,也没有错误