2

Arduino UNOのいくつかの条件に応じてオンとオフを切り替える必要があるイーサネット(Web)サーバーをセットアップする必要があります。

ライブラリServer内のクラスのドキュメントを読みましたが、一度起動するとサーバーを停止する機会がないようです。つまり、対応するものがありません。EthernetEthernetServer.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
  }

}

これは確かに機能しますが、クライアントは適切に拒否されません。保留状態のままになります。ブラウザでは、Webページが確実に読み込まれていることを確認できます。条件が変わったtrue場合、条件がであったときに発行されたリクエストに対して、最終的にクライアントにサービスが提供されfalseます。

リクエストを拒否するメソッドが表示されません(に対応するメソッドはありませんEthernetServer.available())。私の頭に浮かぶ唯一のことは、

server.available().stop();

elseブロックの先頭にあります。これにより、条件が設定されている間に発行された要求を処理できなくなりますfalseが、クライアントとサーバー間の接続が確立されるのを防ぐことはできません(接続を開いてすぐにシャットダウンするようなものです)。

状態が状態のときに接続を確立しないようにするにはどうすればよいfalseですか?

4

2 に答える 2

0

サーバーを無効にしたいときに404ヘッダーを返すだけでいいですか?

if(!condition)
{
     client.println("HTTP/1.1 404 OK");
     client.println("Content-Type: text/html");
     client.println("Connnection: close");
     client.println();
     client.println("<!DOCTYPE HTML>");
     client.println("<html><body>404</body></html>");
}
else
{
     // serve client
}
于 2012-10-29T19:44:22.230 に答える
0

私はArduinoコレクションを手元に持っていないので、ここで推測していますが、記憶とリファレンスを読んで、次のようなものを試すことができます

void loop() 
{
    EthernetClient client = server.available();
    if ( !condition )
    {
        client.stop(); // break connection and do something else
    }
    else
    {
        // serve the client...
    }
}

少なくとも正しい方向に役立つことを願っています。

乾杯、

于 2012-10-29T11:37:04.507 に答える