【问题标题】:Nanomsg TCP HandshakeNanomsg TCP 握手
【发布时间】:2017-07-10 21:10:58
【问题描述】:

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

我正在尝试与使用 nanomsg 的服务器进行通信,以使用 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 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

【问题讨论】:

  • 您是否尝试在您的命令中添加--format ascii?或者把你的数据放在" ",比如"message"?
  • 我尝试发送各种消息(引号、无引号、随机字符串等),但没有任何改变 Arduino 接收的内容。格式化标志仅用于接收数据,我无法控制 nanocat 如何发送数据(据我所知很少)。
  • 原来这是 nanomsg 的一部分。 freelists.org/post/nanomsg/Status,242

标签: c sockets tcp nanomsg


【解决方案1】:

以下文字描述了nanomsg protocol for TCP。

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

【讨论】:

    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2011-07-02
    • 2012-04-04
    相关资源
    最近更新 更多