nodemcu _ esp8266服务器从Android应用程序接收数据并转发到esp8266客户端

时间:2016-07-11 07:10:58

标签: sockets lua esp8266 nodemcu

我是lua的新程序员esp8266。我有2个esp8266和1个Android手机。一个esp8266是我的服务器,另一个esp8266是客户端。我想将数据从Android应用程序发送到服务器和服务器将此数据转发给esp8266客户端。我编写了服务器和客户端程序,但我认为这是错误的,服务器从手机接收数据但没有转发给客户端。

服务器侦听端口9000,当收到的数据在端口9999和esp8266客户端侦听端口9999上转发时。

这是我的esp8266服务器代码:

任何人都可以帮助我吗?

wifi.setmode(wifi.SOFTAP)
wifi.ap.config({ssid="novin",pwd="12345678"})
print(wifi.ap.getip())

if sv~=nil then
    sv:close()
end

function creat_server()
    sv = net.createServer(net.TCP)
     sv:listen(8080, function(c)
      c:on("receive", function(c, pl) 
        if(pl~=nil) then
          print(pl)
          data=pl
          pl=nil
        end         
     end)
    end)
      if(data~=nil) then
        sck(data)
        data=nil
      end 
end

function sck(data)
    sv:listen(9000,function(cc)
        cc:send(data)
        cc:on("receive", function(cc, dt)
            print(dt)
            data1=dt
        end)
        cc:on("sent",function(cc)
            print("data send!!!!!!!!!!")
        end) 
    end)
end

creat_server()

1 个答案:

答案 0 :(得分:0)

我看到你的另一个问题被搁置,你的想法有点问题。作为服务器的esp可以&#t;"转发"数据就像你的意思,我的意思是它不能同时成为服务器和客户端,让它一直是服务器。因此,让我们再次审核并重新创建场景:

你有Android应用程序作为客户端,它将通过POST方法将一些数据发送到服务器节点,你得到它并存储它。然后,您可以通过前一个服务器节点上的GET方法获取客户机节点上的数据。这是一种方式。

关于你提到的方式,首先你提供的代码中的端口与你在问题中所说的不同,除了你需要首先将init节点作为SOFTAP并获取数据并在那之后配置它作为STATION并通过http模块发送数据。 简单地说,你提供的代码太不完美了。

修改 您可以从this site获取所需的所有文档和迷你示例, 如果您需要http模块,请查看this part of that siteHere's说明如何根据需要正确配置wifi的文档。

P.S。 Http模块最近已添加到固件中,如果您想使用它并且您的IDE不能识别它的语法,使用build cloud来构建您自己的固件,它只需要5分钟。 此外,我更容易使用文档而不是网站中的示例代码,您可以根据自己的需要进行选择。