【发布时间】:2012-10-30 03:44:22
【问题描述】:
我需要设置一个必须根据 Arduino UNO 上的某些条件打开和关闭的以太网(Web)服务器。
我在Ethernet library 中阅读了Server 类的文档,似乎一旦启动就没有机会停止服务器,即没有EthernetServer.begin() 对应项。
然后我想在setup 部分设置服务器并根据给定条件何时提供传入连接:
EthernetServer server = EthernetServer(80);
void setup() {
Ethernet.begin(mac, ip);
server.begin();
}
void loop() {
if (condition) {
EthernetClient client = server.available();
if (client == true) {
// serve the client...
}
} else {
// do something else
}
}
这确实有效,但客户端没有被正确拒绝:它只是处于待处理状态。在浏览器中可以看到网页无限期加载,如果条件变为true,客户端最终会为条件为false时发出的请求服务。
我没有看到拒绝请求的方法(没有对应的EthernetServer.available())。我唯一想到的就是执行一个
server.available().stop();
在 else 块的开头。这会阻止在条件为false 时发出请求,但不会阻止客户端和服务器之间的连接发生(就像打开连接并立即关闭它一样)。
当条件为false 时,我怎样才能避免建立连接?
【问题讨论】:
-
使用看门狗自复位?