0

同じネットワークに接続された 2 つの ESP8266 デバイスで TCP ポートを開きたいのですが、どちらかから送信されたデータがもう一方に届きます。私は試してみましたがnet.createServernet.createConnectionどちらも仕事をしていないようですnet.createServer。ブラウザのみだと思います。

以下の例は、1 つのデバイスのみを使用しており、パテからデータを送信できるかどうかをテストするためのものですが、出力が得られません..

注: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で非常によく似たことがありました。

server.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)

client.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

わかりました、最初のテストは成功しました。次に、同じサブネット内の 2 番目の ESP8266 でクライアントを開始しました。当時、両方ともそれぞれの ESPlorer に接続されていました。サーバーが報告した

受け取った: フー

クライアントが報告している間に

受信: エコー: foo

http://nodemcu.readthedocs.org/en/dev/en/modules/net/の API ドキュメントで、この簡単なテストで使用されている関数も調べてください。

于 2016-04-26T19:50:21.147 に答える