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

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

03.01.2020, 11:57. Показов 1956. Ответов 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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 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
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
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
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
04.01.2020, 10:11
_stanislav, многие компиляторы позволяют так писать для своих диалектов С\С++.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru