Arduino:Библиотеки/WiFi101/Класс WiFiClient/connectSSL()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

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


Функция connectSSL()[1]

Подключается к указанным IP-адресу и порту при помощи протокола SSL. Эта функция нужна, когда сервер осуществляет только HTTPS-подключения. Перед использованием функции connectSSL() в модуль Arduino WiFi Shield 101 нужно загрузить сертификат SSL, используемый этим сервером. Впрочем, модуль уже поставляется с сертификатами и должен быть сразу готов к использованию. Инструкций по смене и загрузке новых SSL-сертификатов пока нет, но разработчики обещают в скором времени их выложить.

Функция connectSSL() также поддерживает поиск DNS, если используется доменное имя (например, google.com).

Синтаксис

client.connectSSL(ip, port)
client.connectSSL(URL, port)

Параметры

ip  IP-адрес, к которому должен подключиться клиент (массив из 4 байтов)
URL  доменное имя, к которому должен подключиться клиент (например, arduino.cc). Тип данных  string 
port  порт, к которому должен подключиться клиент. Тип данных ¬– int

Что возвращает

Если подключение выполнено успешно  true, если нет  false.

Пример

/*
  Веб-клиент

 Этот скетч подключается к веб-сайту через SSL-соединение 
 при помощи WiFi-модуля. 

 Этот пример написан для сети, использующей WPA-шифрование. 
 Если нужно WEP, соответствующим образом поменяйте функцию begin()

 Цепь:
 * Модуль WiFi101, подключенный к Arduino

 Создан 13 июля 2010 года пользователем dlf (Metodo2 srl),
 модифицирован 31 мая 2012 года Томом Иго (Tom Igoe)
 */


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

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

int status = WL_IDLE_STATUS;
char server[] = "www.arduino.cc";    // адрес для сайта Arduino (при использовании DNS) 

// инициализируем класс WiFiClient:
WiFiClient client;

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

  // проверяем наличие WiFi-модуля:
  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"

  Serial.println("\nStarting connection to server...");  //  "\n Начинаем подключаться к серверу..."
  // если подключились, сообщаем об этом:
  if (client.connectSSL(server, 443)) {
    Serial.println("Connected to server");  //  "Подключились к серверу"
    // делаем HTTP-запрос:
    client.println("GET /asciilogo.txt HTTP/1.1");
    client.println("Host: www.arduino.cc");  //  "Хост: www.arduino.cc"
    client.println("Connection: close");  //  "Соединение: закрыто"
    client.println();
    Serial.println("Request sent");  //  "Запрос отправлен"
  }
}

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);
  }
}

См.также

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