【问题标题】:Forbidden characters in a TCP packetTCP 数据包中的禁止字符
【发布时间】:2019-01-24 16:51:21
【问题描述】:

我正在尝试将数据从我的 ESP8266 发送到 NodeJS TCP 服务器,连接和基本字符 (48-90) 工作正常,但如果我使用 ASCII-Code (0,1,2,3 ...)我没有从中得到任何有用的数据。所以我在想的是有些字符不允许通过 TCP/IP 发送。

顺便说一句, 我正在使用它来写入服务器,并使用标准 WiFi 客户端库

char arr[255]
for(int i = 0; i < 255; i++){
   arr[i] = (char)i;
}
client.print(arr);

【问题讨论】:

  • “我没有得到有用的数据”。你能详细说明吗?到底发生了什么?
  • 我只得到 2 个字节或根本没有响应
  • 每个“八位字节”(如在 TCP 文档中),因此可以使用字节。您应该记住二进制数据不是文本数据,因此您应该使用自己的函数处理二进制数据。提示:在二进制数据上,您总是需要跟踪数据的长度。如果你弄错了长度(或者你不使用它)可能你使用了错误的函数

标签: node.js tcp character-encoding char


【解决方案1】:

在 TCP/IP 级别,可以发送任何字符值。该协议通常用于传输二进制数据(例如 SSH、FTP 等)。

问题可能出在您的代码中,将字符添加到发送的数据或打印接收到的字符串。

要确定问题出在发送端还是接收端,您可以做的一件事是在您的服务器计算机上使用 Wireshark 来捕获传输的数据并检查字节是否实际发送。

【讨论】:

  • 是的,TCP不涉及字符的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 2012-08-18
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多