Должен подключиться системный вызов успешно через https / порт 443 - PullRequest
0 голосов
/ 08 ноября 2018

Я использую старую кроссплатформенную мобильную платформу (Rhomobile), которая поддерживает вызов API для определения наличия доступного сетевого подключения. Исходный код доступен, и я вижу, когда мы выполняем вызов для обнаружения соединения, мы изучаем результаты системного вызова на уровне ОС, чтобы установить сокет-соединение для данного URL-адреса и порта. Ранее это работало нормально, так как нашей конечной точкой был http. Теперь мы перенесли это в https и видим некоторые странные результаты. Звонок будет

    struct addrinfo hints, *result = NULL, *ptr = NULL;
    int sockfd = -1;
    memset(&hints,0,sizeof(hints));
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    char szPortAsString[5 + 1];
    snprintf(szPortAsString,5,"%d",m_iPort);
    char* szHost = new char[m_szHost.length() + 1];
    memset(szHost, 0, m_szHost.length() + 1);
    strcpy(szHost, m_szHost.c_str());
    int iResult = getaddrinfo(szHost, szPortAsString, &hints, &result);
    ...
    sockfd = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);
    ...
    connect(sockfd, ptr->ai_addr, ptr->ai_addrlen);

и порт будет 443. Что мне неясно, будет ли принято соединение (нам не нужно передавать какие-либо данные) через конечную точку https, для которой требуется клиентский сертификат для отправки / получить данные.

Код можно найти здесь: https://github.com/rhomobile/rhodes/blob/3f5cf6ffa90cf8c648ac19c954932d101fc56b42/lib/commonAPI/coreapi/ext/platform/android/jni/NetworkDetect.cpp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...