Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Как законектиться к https серверу

03.01.2020, 11:57. Показов 2061. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как с помощью сокетов законектиться к серверу https? к примеру https://www.google.com/
Можно ли это сделать без использования сторонних библиотек?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.01.2020, 11:57
Ответы с готовыми решениями:

Как законектиться к MS SQL SERVER?
Мужики расскажите как законектиться к MS SQL SERVER. Система XP, IIS Очень надо!

Ошибка при подключении к серверу через https
При подключении к серверу реализованным на TcpListener+SslStream возникает ошибка:Аутентификация не пройдена из-за закрытия транспортного...

Как законектиться с ORACLE с помощью ADO.NET
Пытаюсь законектиться с локальной БД при помощи объектов ADO.NET - не дает ошибка в строке связи str. string str = 'Provider=MSDAORA;...

30
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
03.01.2020, 14:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ReYalp Посмотреть сообщение
Уж больно много времени это займет
так ведь
Цитата Сообщение от ReYalp Посмотреть сообщение
это уже другой вопрос
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
03.01.2020, 14:13  [ТС]
Croessmah, Вы меня скорее всего неправильно поняли, моей задумкой было лишь донести мысль о том что все можно написать на чистом Си , а вот сколько это времени займет это уже другой вопрос
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.01.2020, 14:20
Цитата Сообщение от ReYalp Посмотреть сообщение
если взять к примеру библиотеку OpenSSL то она же написана скорее всего на Си, тоесть при ее создании использовали только Си
То что библиотека написана на Си это вовсе не означает что там используются только те средства которые входят в язык Си.
Когда вы с этим разберетесь, тогда я думаю пропадет желание
Цитата Сообщение от ReYalp Посмотреть сообщение
донести мысль о том что все можно написать на чистом Си


Добавлено через 2 минуты
Для начала вот вам ссылка.
https://github.com/openssl/ope... /sockets.h
Обратите внимание на подключаемые заголовки
1
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
03.01.2020, 14:22  [ТС]
Undisputed,
Цитата Сообщение от Undisputed Посмотреть сообщение
те средства которые входят в язык Си.
какие средства там могут еще использоваться?
Цитата Сообщение от Undisputed Посмотреть сообщение
все
я не имел ввиду все прям все

Добавлено через 1 минуту
Undisputed,
Цитата Сообщение от Undisputed Посмотреть сообщение
Обратите внимание на подключаемые заголовки
что с ними не так ? Есть апи линукса которое так же написано на Си
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.01.2020, 14:33
Цитата Сообщение от ReYalp Посмотреть сообщение
какие средства там могут еще использоваться?
Например, может быть намешан ассемблер.
Далеко идти не надо. По той же ссылке что я отправил вам выше фигурирует функция WSAGetLastError.
Теперь потрудитесь показать где в стандарте языка Си есть описание функции WSAGetLastError?
Не нашли? Выходит мы опять пришли к тому что в той библиотеке используется API ОС которое не является частью языка Си. К тому же далеко не все функции API ОС могут быть написаны на Си. Они частично могут быть написаны на том же ассемблере.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
03.01.2020, 14:35  [ТС]
Undisputed,
Цитата Сообщение от Undisputed Посмотреть сообщение
Они частично могут быть написаны на том же ассемблере.
это да, согласен, но большинство на Си
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
03.01.2020, 14:37
Цитата Сообщение от ReYalp Посмотреть сообщение
какие средства там могут еще использоваться?
Ну например, расчет контрольной суммы во многих процессорах реализован аппаратно.
4
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
03.01.2020, 18:45
Цитата Сообщение от ReYalp Посмотреть сообщение
какие средства там могут еще использоваться?
Я могу написать dll на ассемблере (просто пример, я не смогу)) и использовать её в Си, вот вам уже не чистый Си
Все апи как правило основаны на dll
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
04.01.2020, 08:58
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну например, расчет контрольной суммы во многих процессорах реализован аппаратно.
это что в такой серьезной книге, такие ошибки бывают? или в gcc это норма?

C
1
2
3
4
5
void
main () {
 
     return;
}
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
04.01.2020, 10:11
_stanislav, многие компиляторы позволяют так писать для своих диалектов С\С++.
1
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
04.01.2020, 22:45
рабочий пример для винапи.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <windows.h>
 
#include <stdio.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
 
char* OpenURL(char *url)
{   WSADATA lpWSAData;
    SOCKET s;
 
    // Проверим на правильность введенный адрес.
    // Он должен начинаться с "http://"
    if (memcmp(url,"HTTP://",7)!=0 && memcmp(url,"http://",7)!=0) return(NULL);
    url+=7;
 
    // Инициализация библиотеки Ws2_32.dll.
    if (WSAStartup(MAKEWORD(1,1),&lpWSAData)!=0) return(NULL);
 
 
    // Получим имя хоста, номер порта и путь ----------------------------
 
    char *http_host=strdup(url); // Имя хоста (HTTP_HOST)
    int port_num=80;             // Номер порта по умолчанию (HTTP_PORT)
    char *http_path=NULL;        // Путь (REQUEST_URI)
 
    char *pch=strchr(http_host,':');
    if (!pch)
    {   pch=strchr(http_host,'/');
        if (pch)
        {   *pch=0;
            http_path=strdup(pch+1);
        }
        else http_path=strdup("");
    }
    else
    {   *pch=0;
        pch++;
        char *pch1 = strchr(pch,'/');
        if (pch1)
        {   *pch1=0;
            http_path=strdup(pch1+1);
        }
        else http_path=strdup("");
 
        port_num = atoi(pch);
 
        if (port_num==0) port_num = 80;
    }
 
    // Поучаем IP адрес по имени хоста
    struct hostent* hp;
    if (!(hp=gethostbyname(http_host)))
    {   free(http_host);
        free(http_path);
        return(NULL);
    }
 
    // Открываем сокет
    s=socket(AF_INET, SOCK_STREAM, 0);
    if (s==INVALID_SOCKET)
    {   free(http_host);
        free(http_path);
        return(NULL);
    }
 
    // Заполняем структуру sockaddr_in
    struct sockaddr_in ssin;
    memset ((char *)&ssin, 0, sizeof(ssin));
    ssin.sin_family = AF_INET;
    ssin.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr[0];
    ssin.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr[1];
    ssin.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr[2];
    ssin.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr[3];
    ssin.sin_port = htons(port_num);
 
    // Выводим IP адрес хоста, с которым будем соединятся
    printf("Conecting to %d.%d.%d.%d...",(unsigned char)hp->h_addr[0],
           (unsigned char)hp->h_addr[1],
           (unsigned char)hp->h_addr[2],
           (unsigned char)hp->h_addr[3]);
 
    // Соединяемся с хостом
    if (connect(s, (sockaddr *)&ssin, sizeof(ssin))==-1)
    {   free(http_host);
        free(http_path);
        printf("Error\n");
        return(NULL);
    }
    printf("Ok\n");
 
    // Формируем HTTP запрос
    char *query=(char*)malloc(2048);
 
    strcpy(query,"GET /");
    strcat(query,http_path);
    strcat(query," HTTP/1.0\nHost: ");
    strcat(query,http_host);
    strcat(query,
           "\nUser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    strcat(query,"\nAccept: */*\n\n");
 
 
    // Выводим HTTP запрос
    printf("%s",query);
 
    // Отправляем запрос серверу
    int cnt=send(s,query,strlen(query),0);
 
    // Освобождаем память
    free(http_host);
    free(http_path);
    free(query);
 
    // Проверяем, не произошло ли ошибки при отправке запроса на сервер
    if (cnt==SOCKET_ERROR) return(NULL);
 
    cnt=1;
 
    // Получаем ответ с сервера ---------------------------------
 
    int size=1024*1024; // 1Mb
    char *result=(char*)malloc(size);
    strcpy(result,"");
    char *result_ptr=result;
 
    while (cnt!=0 && size>0)
    {   cnt=recv (s, result_ptr, sizeof(size),0);
        if (cnt>0)
        {   result_ptr+=cnt;
            size-=cnt;
        }
    }
    *result_ptr=0;
 
    // Деинициализация библиотеки Ws2_32.dll
    WSACleanup();
 
    return(result);
}
 
int main()
{   char *result = OpenURL("http://www.google.com/");
    if (result)
    {   printf("%s",result);
        free(result);
    }
    else
    {   printf("Error # WSABASEERR+%d\n",WSAGetLastError()-WSABASEERR);
    }
    getchar();
    getchar();
}
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2020, 22:45

Как законектиться к файлу *.mdb без контрола ADODB?
Как законектиться к файлу *.mdb без контрола ADODB? точнее какая должна быть connectionstring? Заранее спасибо.

Как настроить HTTPs
Windows Server 2003, Apache 2.2.14. Была написана веб морда для сбора отчетности. но по независящим от меня обстоятельств, весть трафик...

Как работать с https?
Как работать с https в php? file_get_contents - не катит когда передаю get запросы . нужно к примеру сделать GET запрос на...

Https certificate как установить?
Пробую сгенерировать privat/public key. Пишу на винде(нее спрашивайтен почему) + я нубер. так вот, непосредственно сгенерировал...

Как посылать GET запросы по https?
как посылать GET запросы по https ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru