2016-04-26 12 views
0

Ich bin nicht sicher, dass NodeMCU dies tun kann, ich möchte einen TCP-Port auf zwei ESP8266-Geräten öffnen, die an das gleiche Netzwerk angeschlossen sind das andere. Ich habe versucht net.createServer und net.createConnection, von denen keiner scheint, um den Job zu tun, nehme ich an net.createServer ist nur Browser.Wie man ein bidirektionales TCP-Relais in NodeMCU für das ESP8266 macht

Beispiel unterhalb von nur ein Gerät und ist nur zu testen, ob ich Daten von Kitt senden kann, aber ich bekomme keine Ausgabe ..

Anmerkung: für wifi.sta.status() == 5 warten, bevor Sie den Server starten macht keinen Unterschied.

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) 

Antwort

1

Das funktioniert definitiv. Wir hatten etwas ganz ähnliches am anderen Tag bei 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") 

Testing

Ich begann zuerst den Server dann gesendet TCP-Daten von der Kommandozeile

Ok, erster Test erfolgreich. Dann habe ich den Client auf einem zweiten ESP8266 im selben Subnetz gestartet. Beide waren zu der Zeit mit ihrem jeweiligen ESPlorer verbunden. Der Server meldet

erhalten: foo

, während der Client

berichtet

erhalten: echo: foo

sicher sein, auch die Funktionen in dieser verwendet nachschlagen einfacher Test in der API Dokumentation unter http://nodemcu.readthedocs.org/en/dev/en/modules/net/.

+0

Mate danke für die Klärung, ich konnte keinen klar erklärten Unterschied zwischen diesen beiden Funktionen finden. – ChrisAdmin