作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我也在 Arduino 部分发布了这个,但这个问题可能更多是由于我对 nanomsg 和一般连接的无知而不是 Arduino 问题造成的。
我正在尝试与使用 nanomsg 的服务器通信使用 Arduino 通过端口上的 TCP 进行通信。我尝试了各种不同的配置(远程连接到 arduino 并让 arduino 连接到服务器,使用不同的 nanomsg 工具)。
我可以让 Arduino 在服务器模式下(运行 WiFiWebServer 示例的一个非常轻微修改的版本)成功读取我使用 cat 发送的文本
sudo cat texttosend > /dev/tcp/192.168.1.50/80
然而,在所有配置中,无论我尝试使用 nanomsg 发送什么文本,我总是得到一串相同的数字。从 arduino 打印字节为十六进制,它们是 0 53 50 0 0 51 0 0。Nanocat(nanomsg 的简单命令行工具)挂起而不是发送和关闭(就像它在发送之前不断尝试确认连接数据)。
我假设这是 Arduino 失败的某种握手,因为客户端连接,读取这些字节,然后关闭并重新启动。在两端(从我的本地计算机到服务器)使用 nanomsg 工作正常。
如果我得到的这些数字是一次握手,我该如何完成它?
Arduino 代码循环部分的内容是
client = server.available();
if (client) {
Serial.println("new client");
while (client.connected()) {
while (client.available()) {
byte b = client.read();
Serial.print(b,HEX);
Serial.write(b);
}
}
}
尝试连接时挂起的 nanocat 命令是
nanocat --push --connect tcp://192.168.1.50:80 --data thismesadsfsdfg
最佳答案
以下文字描述了nanomsg protocol for TCP .
在其中您可以看到为什么要获取指定的字节流以及在要发送的文本之前应该写什么。
关于c - Nanomsg TCP 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27586541/
我是一名优秀的程序员,十分优秀!