【发布时间】:2013-03-05 21:08:19
【问题描述】:
我对从 Unix 服务器到 Pure Data 的 TCP/IP 通信感兴趣。我在 Unix 服务器端使用套接字,在纯数据端使用 netclient 实现了它。我为此利用了聊天服务器教程(3.Networking > 10.chat_client.pd)。
现在问题在于服务器将数据作为“;”分隔的“字符串”消息流式传输
我的问题是,有没有办法将字符串消息以外的东西发送到 Pure Data,比如字节流或序列化数字流? Pure Data 可以接收此类消息吗?
由于字符串需要太多字节来传输,例如数字“1024;”已经是5个字节了,而这样一个整数只有4个字节。
更新:对于偶然发现这篇文章以寻找答案的每个人。
显然,纯数据端的 [netclient] 只能收到 ;分隔的消息。 所以上面提出的问题的解决方案: 我的问题是,有没有办法将字符串消息以外的东西发送到 Pure Data,比如字节流或序列化数字流? Pure Data 可以接收此类消息吗?
解决办法是使用[tcpclient],它可以接收字节流数据。
现在我的问题是,如何获得四个紧凑的数字? 现在我有一系列字节,至少顺序正确。
我正在从我的 UNIX 服务器发送一个结构
typedef struct {
int var_code;
int sample_time;
int hr;
float hs;
} phy_data;
样本数据可能是 2 1000000 51 2000.56
当在 Pure Data 中接收和打印时,我会得到如下输出:
:0 0 0 2 0 10 114 26 0 0 0 51 0 16 242 78
你可以清楚地注意到数字 2 和数字 51,我猜其他的也是正确的。
如何将这些数字恢复为可用格式? 也许对 [bytes2any] 和 [route] 进行了一些操作,但我无法用它提取数据?
【问题讨论】:
-
整数
1000000应转换为0 15 66 64而不是0 10 114 26(如果您的字节顺序是大端(网络传输的默认设置),则为 684570)
标签: unix networking client-server puredata