0

我不确定 NodeMCU 可以做到这一点,我想在连接到同一网络的两个 ESP8266 设备上打开一个 TCP 端口,从其中一个发送的数据到达另一个。我已经尝试过,net.createServer并且net.createConnection似乎都没有完成这项工作,我认为net.createServer它只是浏览器。

下面仅使用一台设备的示例,只是为了测试我是否可以从腻子发送数据,但我没有得到任何输出..

注意:在启动服务器之前等待wifi.sta.status() == 5没有区别。

   wifi.setmode(wifi.STATION)
   wifi.sta.config(ssid,pwd)
   wifi.sta.connect()
   wifi.sta.setip({ip=ip,netmask="255.255.255.0",gateway=gateway})

   srv=net.createServer(net.TCP) 
   srv:listen(port,function(conn) 
     conn:on("receive", function(client,request)
      print(request) -- ! never happens  
     end)
   end)
4

1 回答 1

1

这绝对有效。前几天我们在https://stackoverflow.com/a/36769999/131929遇到了非常相似的事情。

服务器.lua

-- establish connection to AP
...

srv=net.createServer(net.TCP) 
srv:listen(5555, function(c) 
  c:on("receive", function(sck, data)
    print("received: " .. data)
    sck:send("echo: " .. data)
  end)
end)

客户端.lua

wifi.setmode(wifi.STATION)
wifi.sta.config("test", "password")
wifi.sta.setip({ip="192.168.0.199", netmask="255.255.255.0", gateway="192.168.0.1"})

srv = net.createConnection(net.TCP, 0)
srv:on("receive", function(sck, data) print("received: " .. data) end)
srv:on("connection", function(sck)
  sck:send("foo")
end)
srv:connect(5555,"192.168.56")

测试

我首先启动服务器,然后从命令行发送 TCP 数据

$ echo "foo" | nc -w1 192.168.0.56 5555
echo: foo

好的,第一次测试成功。然后我在同一子网中的第二个 ESP8266 上启动客户端。当时两人都连接到各自的 ESPlorer。服务器报告了

收到:foo

而客户报告

收到:回声:foo

请务必在http://nodemcu.readthedocs.org/en/dev/en/modules/net/的 API 文档中查找此简单测试中使用的函数。

于 2016-04-26T19:50:21.147 回答