我还在Arduino部分发布了这篇文章,但是这个问题可能更多的原因是我对nanomsg和连接的无知,而不是Arduino问题。
我试图与使用奈米的服务器进行通信,该服务器使用Arduino在端口上通过TCP进行通信。我尝试过各种不同的配置(使用不同的nanomsg工具远程连接到arduino和让arduino连接到服务器)。
我可以让Arduino在服务器模式下(运行一个修改过的WiFiWebServer示例版本)成功地读取我使用cat发送的文本。
sudo cat texttosend > /dev/tcp/192.168.1.50/80然而,在所有的配置中,无论我试图使用nanomsg发送什么文本,我总是得到一个相同数字的字符串。从arduino中以十六进制的形式打印字节,它们是0 53 50 0 0 0 5 1 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发布于 2015-03-16 13:11:43
下面的文本描述了用于TCP的nanomsg协议。
在它中,您可以看到为什么要获取指定的字节流,以及在要发送的文本之前应该写什么。
https://stackoverflow.com/questions/27586541
复制相似问题