■server.available関数
Serverクラス※1のserver.available関数は、サーバーに接続され、読み取り可能なデータがあるクライアントを取得します。
返されたクライアントオブジェクトが有効範囲外になっても接続は維持されます。
client.stop関数を呼び出すことで終了することができます。
■使用例
Arduino IDEで使用するserver.available関数の使い方は以下の通りです。
例えば「Arduino Leonardo Ethernet」をPCにUSB接続し、またネットワークに接続されたLANケーブル接続して、ArduinoIDEの「ツール」→「ボード」→「Arduino Ethernet」を選択した状態にします。
次に下記プログラムを実行すると、イーサネットデバイスを初期化し、クライアントのリスニングを開始します。
server.available関数により受信クライアントが接続していると確認した場合は、受信クライアントからバイトを読み込み、サーバーに接続されているすべてのクライアントにこれを送信します。
#include <Ethernet.h> #include <SPI.h> // シールドのメディアアクセス制御(イーサネットハードウェア)アドレス byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //シールドのIPアドレス byte ip[] = { 10, 0, 0, 177 }; // ルータのゲートウェイアドレス byte gateway[] = { 10, 0, 0, 1 }; // サブネット byte subnet[] = { 255, 255, 0, 0 }; // telnetはデフォルトでポート23になります EthernetServer server = EthernetServer(23); void setup() { // イーサネットデバイスを初期化する Ethernet.begin(mac, ip, gateway, subnet); // クライアントのリスニングを開始する server.begin(); } void loop() { // 受信クライアントが接続している場合は、読み込み可能なバイト数があります。 EthernetClient client = server.available(); if (client) { // 受信クライアントからバイトを読み込んで書き戻します // サーバーに接続されているすべてのクライアントに送信します。 server.write(client.read()); } }
図1:プログラム例
■構文
server.available()
■パラメータ
特に無し
■戻り値
Clientオブジェクト。クライアントが読み取り可能なデータを持っていない場合、このオブジェクトはif文でfalseと評価されます。(図2参照)
励みになりますのでよければクリック下さい(^o^)/