Nanomsg TCP握手

时间:2014-12-21 03:43:59

标签: c sockets tcp nanomsg

我也在Arduino部分发布了这个,但是这个问题可能更多是由于我对nanomsg和连接的无知而不是Arduino问题。

我正在尝试与使用nanomsg的服务器进行通信,以使用Arduino通过TCP在端口上进行通信。我尝试了各种不同的配置(远程连接到arduino并使用不同的nanomsg工具将arduino连接到服务器)。

我可以在服务器模式下运行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

1 个答案:

答案 0 :(得分:2)

以下文字介绍了nanomsg protocol for TCP

在其中,您可以看到为什么要获取指定的字节流以及在要发送的文本之前应该写什么。