我有一台主服务器计算机(Windows 10),我用它在节点js中使用TCP控制多个Raspberry PI。
我想知道将每个pi的主机名(pi-001.local,pi002.local,pi003.local等...)发送到服务器的最佳方法是什么。
在服务器上运行socket.remoteAddress
会返回客户端的IP,但我需要的是主机名
显然,每个pi都可以使用os.hostname()
方法解析自己的主机名
但是我需要跟踪并知道每个net.Socket对象在服务器端上关联的主机名。
有没有比通过socket.write(os.hostname())
发送它更好的方法?
谢谢!
答案 0 :(得分:1)
只要TCP服务器使用的DNS服务器知道PI设备的主机名,您就可以让TCP服务器为每个连接执行socket.remoteAddress
的反向查找。您可以使用dns.reverse()
在节点中执行此反向查找。
答案 1 :(得分:0)
这已经在SMTP协议中完成了,这是一个用于TCP协商的好模型。使用这种方法,你的Pi在连接服务器时会做的第一件事是写一个
HELO pi00001.local
......这样,您的服务器总是希望通过每次连接或重新连接从Pi预先获得信息。