Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 ESP8266 NodeMCU Lua“;“套接字客户端”;至;Python服务器";无法连接_Python 2.7_Lua_Esp8266_Nodemcu - Fatal编程技术网

Python 2.7 ESP8266 NodeMCU Lua“;“套接字客户端”;至;Python服务器";无法连接

Python 2.7 ESP8266 NodeMCU Lua“;“套接字客户端”;至;Python服务器";无法连接,python-2.7,lua,esp8266,nodemcu,Python 2.7,Lua,Esp8266,Nodemcu,我试图将NodeMCU套接字客户端程序连接到Python服务器程序,但无法建立连接 我测试了一个简单的Python客户机-服务器代码,效果很好 Python服务器代码 import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 1

我试图将NodeMCU套接字客户端程序连接到Python服务器程序,但无法建立连接

我测试了一个简单的Python客户机-服务器代码,效果很好

Python服务器代码

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   print c.recv(1024)
   c.send('Thank you for connecting')
   c.close()                # Close the connection
Python客户机代码(使用此代码,我测试了上述代码)

输出服务器端为

Got connection from ('192.168.99.1', 65385)
Hi i am aslam
NodeMCU码

--set wifi as station
print("Setting up WIFI...")
wifi.setmode(wifi.STATION)
--modify according your wireless router settings
wifi.sta.config("xxx", "xxx")
wifi.sta.connect()

function postThingSpeak()
  print("hi")
  srv = net.createConnection(net.TCP, 0)
  srv:on("receive", function(sck, c) print(c) end)
  srv:connect(12345, "192.168.0.104")
  srv:on("connection", function(sck, c)
    print("Wait for connection before sending.")
    sck:send("hi how r u")
  end)
end

tmr.alarm(1, 1000, 1, function()
  if wifi.sta.getip() == nil then
    print("Waiting for IP address...")
  else
    tmr.stop(1)
    print("WiFi connection established, IP address: " .. wifi.sta.getip())
    print("You have 3 seconds to abort")
    print("Waiting...")
    tmr.alarm(0, 3000, 0, postThingSpeak)
  end
end)
但是当我运行NodeMCU时,Python服务器中没有响应

ESPlorer控制台中的输出如下所示

Waiting for IP address...
Waiting for IP address...
Waiting for IP address...
Waiting for IP address...
Waiting for IP address...
Waiting for IP address...
WiFi connection established, IP address: 192.168.0.103
You have 3 seconds to abort
Waiting...
hi
我是做错了什么还是错过了一些步骤


非常感谢您的指导。

在我第二次访问此网站后,它终于点击了。我第一次一定是扫描你的Lua代码太快了

在建立连接之前,需要设置所有事件处理程序(
srv:on
)。否则它们可能不会触发-这取决于建立连接的速度

srv = net.createConnection(net.TCP, 0)
srv:on("receive", function(sck, c) print(c) end)
srv:on("connection", function(sck)
  print("Wait for connection before sending.")
  sck:send("hi how r u")
end)
srv:connect(12345,"192.168.0.104")

错误,但已经存在。

控制台上的NodeMCU输出是什么?控制台上的输出正在等待IP地址。。。正在等待IP地址。。。正在等待IP地址。。。正在等待IP地址。。。正在等待IP地址。。。正在等待IP地址。。。已建立WiFi连接,IP地址:192.168.0.103您有3秒时间中止等待。。。hiSo,无论出于何种原因,无法建立到192.168.0.104:12345的连接。你试过了吗?您是否尝试连接到internet上的某个公共主机?在80端口上尝试主机
httpbin.org
和路径
/get
。你好,Marcel,首先非常感谢你在这个论坛上为我和其他人提供的指导,你提供的指导真的很有教育意义,在打破了我的头脑,甚至分析了wireshark中的数据包之后,我刚刚解决了这个问题,问题不在于事件处理,而在于python代码,而不是host=socket.gethostname()我硬编码了host='192.168.0.104',它现在可以工作了(使用我的lua和您提到的更改)。您认为这种行为有什么可能的原因吗?另外,在lua而不是IP中,当我尝试主机名srv:connect(12345,'SyedAslam-PC')时,它给了我DNS故障。有什么建议可以解释为什么会发生这种情况吗?显然,您的网络中没有DNS组件可以将“SyedAslam PC”解析为IP地址。
srv = net.createConnection(net.TCP, 0)
srv:on("receive", function(sck, c) print(c) end)
srv:on("connection", function(sck)
  print("Wait for connection before sending.")
  sck:send("hi how r u")
end)
srv:connect(12345,"192.168.0.104")