Я написал этот простой код для проверки сетевого подключения или наших приложений для iOS:
int CL_Network::checkConnectionInt1(){
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;
}
curl_easy_cleanup(curl);
return -1;
}
Наш тест в порядке, возвращает 0, когда Wi-Fi включен, но рецензент Apple возвращает 23 (CURL_WRITE_ERROR) с включением или отключением Wi-Fi.
Рецензент рассказывает нам о странном поведении других (учитывая, что Wi-Fi включен)
Есть ли у вас какие-либо предложения?
Последнее замечание, подробный вывод curl_easy_perform
- О подключении () к порту 80 www.google.com (# 0)
- Попытка 173.194.35.20 …
- связано
- Подключен к www.google.com (173.194.35.20) порт 80 (# 0)
GET / HTTP / 1.1 Хост: www.google.com Принять: /
< HTTP / 1.1 302 найдено < Место нахождения: http://www.google.it/ <
Cache-Control: приватный < Content-Type: text / html; кодировка = UTF-8 <
Set-Cookie:
PREF = J = 08f8ea131f5d39dd: ФФ = 0: ТМ = 1367680782: LM = 1367680782: S = at5IyKNTpeoFFnif; истекает = понедельник, 04 мая 2015 года 15:19:42 по Гринвичу; Путь = /; домен = .google.com <
Set-Cookie:
NID = 67 = uPKHTXNtVuYy4QOwVHstK4NzMGZcDssYW …..;
истекает = вс, 3 ноября 2013 г. 15:19:42 мск; Путь = /; домен = .google.com;
HttpOnly < P3P: CP = «Это не политика P3P! Смотрите
http://www.google.com/support/accounts/bin/answer.py?hl=en&ответ = 151657
для получения дополнительной информации.» < Дата: сб, 04 мая 2013 15:19:42 GMT < Сервер: GWS <
Длина контента: 218 < X-XSS-защита: 1; Режим = Блок <
X-Frame-Options: SAMEORIGIN <
302 Перемещено Документ
переехал Вот.
* Соединение № 0 с хостом www.google.com осталось без изменений
* Закрытие соединения № 0 2013-05-04 17: 19: 42.183
testcurl [1468: c07] checkConnection 1: 0
Вам также нужно написать обратный вызов
size_t CurlWriteCallback(char* buf, size_t size, size_t nmemb, void* up)
{
TRACE("CURL - Response received:\n%s", buf);
TRACE("CURL - Response handled %d bytes:\n%s", size*nmemb);
// tell curl how many bytes we handled
return size*nmemb;
}
// ...int CL_Network::checkConnectionInt1(){
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &CurlWriteCallback);
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;
}
curl_easy_cleanup(curl);
return -1;
}
Других решений пока нет …