2016-04-26 5 views
0

Я не уверен, что NodeMCU может это сделать, я хочу открыть TCP-порт на двух устройствах ESP8266, подключенных к одной и той же сети, данные, отправленные либо из другой. Я пробовал net.createServer и net.createConnection, ни один из которых, похоже, не выполняет эту работу, я предполагаю, что net.createServer является браузером.Как сделать двухстороннее TCP-реле в NodeMCU для ESP8266

Пример ниже только с помощью одного устройства, а просто проверить, если я могу отправить данные из замазки, но я не получаю выход ..

примечание: ожидание 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) 

ответ

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 

Хорошо, первый тест прошел успешно. Затем я запустил клиент на второй ESP8266 в той же подсети. Оба были подключены к их соответствующему ESPlorer в то время. Сервер сообщил

получил: Foo

пока клиент сообщил

получил: эхо: обув

Не забудьте также посмотреть функции, используемые в этом простой тест в документации API по адресу http://nodemcu.readthedocs.org/en/dev/en/modules/net/.

+0

Mate thankyou для освобождения этого, я не мог найти четко объясненную разницу между этими двумя функциями, и прибил ее. – ChrisAdmin