2016-04-26 9 views
0

NodeMCUがこれを行うことができるかどうかわかりません。同じネットワークに接続された2台のESP8266デバイス上でTCPポートを開き、もう片方。 私はnet.createServernet.createConnectionを試しましたが、どちらもその仕事をしていないようですが、私はnet.createServerがブラウザのみであると仮定しています。ただ一つのデバイスを使用して、ちょうど私がパテからデータを送信できるかどうかをテストが、私は何も出力を得るないことですが、以下のESP8266のNodeMCUで双方向TCPリレーを作成する方法

例..

注:サーバーを起動する前に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 

[OK]、最初のテストに成功しました。次に、同じサブネット内の2番目のESP8266でクライアントを開始しました。両者とも当時のそれぞれのESPlorerに接続されていました。 FOO

クライアントが受信

報告しながら::エコー:fooの

もこの中で使用される関数を検索してくださいを受け

を報告したサーバーAPIドキュメント(http://nodemcu.readthedocs.org/en/dev/en/modules/net/)の簡単なテスト。

+0

これをクリアするためのお手伝いがありましたが、私はこれら2つの機能の間に明確に説明された違いが見つかりませんでした。 – ChrisAdmin