首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeMCU TCP连接超时

NodeMCU TCP连接超时
EN

Stack Overflow用户
提问于 2016-12-07 18:02:14
回答 1查看 911关注 0票数 0

我正在试用ESP8266并使用NodeMCU固件(nodemcu_integer_0.9.6-dev_20150704.bin)。我的连接代码如下所示:

代码语言:javascript
运行
复制
function foo()
  conn = net.createConnection(net.TCP, 0)      
  conn:on("connection", function() 
    text = "some text\r\n"
    conn:send(text)
  end)
  conn:connect(5000,"192.168.240.1")
end

这是一种功能。我的第一个问题是什么时候退出这个函数?我是否必须有一个明确的‘退出’声明?我意识到NodeMCU是事件驱动的,连接的调用是在逻辑处理'connection‘之后进行的(此时我发送了一些东西)。我对此没意见,但我想知道我们是如何以及什么时候摆脱'foo‘的。

另一件事是,如何对此实现超时?当发生这种情况时,我希望超时并退出。

谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2016-12-07 20:10:41

在这段代码中,在函数foo()和end之间,您定义的函数foo ()此时没有执行它。

当在另一个带foo()的代码中调用此函数时,将执行此代码。

当您调用foo ()并执行foo ()代码时,当您调用foo ()和foo ()代码时,首先

代码语言:javascript
运行
复制
conn = net.createConnection(net.TCP, 0)

创建(在当前中)一个套接字并将其分配给变量conn。康涅狄格是从那一刻起的肥皂。

然后,

代码语言:javascript
运行
复制
conn:on("connection", function() 
  text = "some text\r\n"
  conn:send(text)
end)

您将分配一个回调函数,当套接字实现连接时,该回调函数将在(未来)事件中执行。

然后,

代码语言:javascript
运行
复制
conn:connect(5000,"192.168.240.1")

您要求插件尝试连接并执行函数foo () ends (而foo ()返回)

在想象的时间线上,事情可能会这样发展。

当解释器读取代码函数foo()时.end,函数foo ()是定义的,但没有执行。

0us foo() foo()代码开始执行,因为我们调用foo()

20 is net.create.套接字被创建

40 is 康涅狄格:在.上,某些回调函数被标记为de socket

60 to conn:connect..套接字开始尝试连接

65 us foo()函数结束并返回,并执行“另一段代码”

120 us套接字实现连接,并触发回调功能。

125 us回调代码:

代码语言:javascript
运行
复制
text = "some text\r\n"
conn:send(text)

与“另一个代码”并行执行。

将来的事件“套接字连接”会触发,在将来,回调将在当前使用conn:on()签名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41024281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档