Arduino:Библиотеки/WiFi101/Класс WiFiSSLClient

Материал из Онлайн справочника
Версия от 12:29, 8 июля 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс WiFiSSLClient[1]

Этот класс позволяет создавать клиента, который всегда подключается к указанным IP-адресу и порту при помощи SSL, даже если вместо client.connectSSL() используется client.connect(). Это нужно, если у вас библиотека, которая принимает только простой Client, но вы хотите, чтобы она использовала SSL, а названия функций в клиенте без SSL остались без изменений.

Синтаксис

WiFiSSLClient client;

Параметры

Нет.

Пример

/*
Этот пример создает объект для клиента, который подключается и
передает данные только при помощи SSL. 

Он совместим с функциями, используемыми, как правило, для простых
подключений – вроде client.connect(host, port).

Создан Артуро Гаудалупи (Arturo Guadalupi), последняя правка – в
ноябре 2015 года.

*/

#include <SPI.h>
#include <WiFi101.h>

char ssid[] = "yourNetwork"; //  SSID вашей сети (название) 
char pass[] = "secretPassword";    // пароль к вашей сети (для WPA; для WEP используйте это значение в качестве ключа)
int keyIndex = 0;            // индекс ключа для вашей сети (нужно только для WEP)

int status = WL_IDLE_STATUS;
// если не хотите использовать DNS (и сократить размер скетча)
// используйте числовой IP вместо названия сервера:
//IPAddress server(74,125,232,128);  // числовой IP для Google (без DNS)
char server[] = "www.google.com";    // название сервера для Google (с DNS)

// инициализируем клиент из библиотеки WiFi101 с IP-адресом и портом,
// к которым вы хотите подключиться (порт 80 по умолчанию используется для HTTP):
WiFiSSLClient client;

void setup() {
  // инициализируем последовательную коммуникацию и ждем открытия порта: 
  Serial.begin(9600);
  while (!Serial) {
    ; // ждем подключения последовательного порта (нужно только для плат со штатным USB-портом) 
  }

  // проверяем наличие модуля:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");  // "WiFi-модуль не подключен"
    // дальше не продолжаем:
    while (true);
  }

  // пытаемся подключиться к WiFi-сети:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");  // "Пытаемся подключиться к SSID: "
    Serial.println(ssid);
    // подключаемся к сети WPA/WPA2; при подключении к открытой 
    // или WEP-сети эту строчку нужно изменить: 
    status = WiFi.begin(ssid, pass);

    // ждем 10 секунд для подключения: 
    delay(10000);
  }
  Serial.println("Connected to wifi");  // "Подключились к WiFi"
  printWifiStatus();

  Serial.println("\nStarting connection to server...");  // "\nЗапуск подключения к серверу..."
  // если подключились, сообщаем об этом через монитор порта: 
  if (client.connect(server, 443)) {
    Serial.println("connected to server");  // "подключились к серверу"
    // делаем HTTP-запрос:
    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");  // "Соединение: закрыто"
    client.println();
  }
}

void loop() {
  // если есть какие-либо входящие байты, считываем их и показываем: 
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }

  // если сервер отключился, останавливаем работу клиента:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting from server.");  // "отключились от сервера"
    client.stop();

    // дальше вечно ничего не делаем:
    while (true);
  }
}


void printWifiStatus() {
  // показываем SSID сети, к которой подключились: 
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // показываем IP-адрес нашего WiFi-модуля:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");  // "IP-адрес: "
  Serial.println(ip);

  // показываем мощность приемного сигнала:  
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");  // "мощность сигнала (RSSI):"
  Serial.print(rssi);
  Serial.println(" dBm");
}

См.также

Внешние ссылки