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

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

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция 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.

Пример

 1 /*
 2   Веб-клиент
 3 
 4  Этот скетч подключается к веб-сайту через SSL-соединение 
 5  при помощи WiFi-модуля. 
 6 
 7  Этот пример написан для сети, использующей WPA-шифрование. 
 8  Если нужно WEP, соответствующим образом поменяйте функцию begin()
 9 
10  Цепь:
11  * Модуль WiFi101, подключенный к Arduino
12 
13  Создан 13 июля 2010 года пользователем dlf (Metodo2 srl),
14  модифицирован 31 мая 2012 года Томом Иго (Tom Igoe)
15  */
16 
17 
18 #include <SPI.h>
19 #include <WiFi101.h>
20 
21 char ssid[] = "yourNetwork"; //  SSID вашей сети (ее название)
22 char pass[] = "secretPassword";    // пароль к вашей сети (используйте его для WPA; для WEP используйте ключ)
23 int keyIndex = 0;            // индекс ключа для вашей сети (нужно только для WEP)
24 
25 int status = WL_IDLE_STATUS;
26 char server[] = "www.arduino.cc";    // адрес для сайта Arduino (при использовании DNS) 
27 
28 // инициализируем класс WiFiClient:
29 WiFiClient client;
30 
31 void setup() {
32   // инициализируем последовательную коммуникацию и ждем открытия порта:
33   Serial.begin(9600);
34   while (!Serial) {
35     ; // ждем подключения последовательного порта (нужно только для Leonardo)
36   }
37 
38   // проверяем наличие WiFi-модуля:
39   if (WiFi.status() == WL_NO_SHIELD) {
40     Serial.println("WiFi shield not present");  //  "WiFi-модуль отсутствует"
41     // дальше не продолжаем:
42     while (true);
43   }
44 
45   // пробуем подключиться к WiFi-сети:
46   while (status != WL_CONNECTED) {
47     Serial.print("Attempting to connect to SSID: ");  //  "Пытаемся подключиться к SSID: "
48     Serial.println(ssid);
49     // подключаемся к сети WPA/WPA2 (при использовании открытой сети или WEP-сети эту строчку нужно поменять):
50     status = WiFi.begin(ssid, pass);
51 
52     // 10 секунд ждем подключения:
53     delay(10000);
54   }
55   Serial.println("Connected to wifi");  //  "Подключились к WiFi"
56 
57   Serial.println("\nStarting connection to server...");  //  "\n Начинаем подключаться к серверу..."
58   // если подключились, сообщаем об этом:
59   if (client.connectSSL(server, 443)) {
60     Serial.println("Connected to server");  //  "Подключились к серверу"
61     // делаем HTTP-запрос:
62     client.println("GET /asciilogo.txt HTTP/1.1");
63     client.println("Host: www.arduino.cc");  //  "Хост: www.arduino.cc"
64     client.println("Connection: close");  //  "Соединение: закрыто"
65     client.println();
66     Serial.println("Request sent");  //  "Запрос отправлен"
67   }
68 }
69 
70 void loop() {
71   // если от сервера есть какие-нибудь входящие байты,
72   // считываем их и показываем через монитор порта: 
73   while (client.available()) {
74     char c = client.read();
75     Serial.write(c);
76   }
77 
78   // если сервер отключился, останавливаем работу клиента:
79   if (!client.connected()) {
80     Serial.println();
81     Serial.println("disconnecting from server.");  //  "отключение от сервера"
82     client.stop();
83 
84     // вечно ничего не делаем:
85     while (true);
86   }
87 }

См.также

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