我是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()
答案 0 :(得分:0)
我看到你的另一个问题被搁置,你的想法有点问题。作为服务器的esp可以&#t;"转发"数据就像你的意思,我的意思是它不能同时成为服务器和客户端,让它一直是服务器。因此,让我们再次审核并重新创建场景:
你有Android应用程序作为客户端,它将通过POST方法将一些数据发送到服务器节点,你得到它并存储它。然后,您可以通过前一个服务器节点上的GET方法获取客户机节点上的数据。这是一种方式。
关于你提到的方式,首先你提供的代码中的端口与你在问题中所说的不同,除了你需要首先将init节点作为SOFTAP并获取数据并在那之后配置它作为STATION并通过http模块发送数据。 简单地说,你提供的代码太不完美了。
修改强> 您可以从this site获取所需的所有文档和迷你示例, 如果您需要http模块,请查看this part of that site。 Here's说明如何根据需要正确配置wifi的文档。
P.S。 Http模块最近已添加到固件中,如果您想使用它并且您的IDE不能识别它的语法,使用build cloud来构建您自己的固件,它只需要5分钟。 此外,我更容易使用文档而不是网站中的示例代码,您可以根据自己的需要进行选择。