Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.12.2022
Сообщений: 15

Curl wcf service wsdl

04.04.2025, 17:26. Показов 10767. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Имеется wcf сервис работает под Windows.
из под Linux достучался до него следующей командой:
Code
1
curl -X POST http://A104003053:9001/SMSCenter/GetDeviceList -d SMSCenterService.wsdl
Результат:
Code
1
[{"PortID":0,"PortName":"COM5","PortUse":true,"HardDeviceID":"USB\\VID_12D1&SUBCLASS_03&PROT_10\\6&677674A&0&0000","InitializationCommands":"","DeviceName":"HUAWEI Mobile Connect - Modem","IMEIDevice":"866119028926443","SimCCID":"250022481227066","SMSCount":0,"SimDescription":"Показания","UseMailListID":0,"StartTime":"2025-04-04T08:30:00","EndTime":"2025-04-04T18:30:00","PC_Name":"H011-RCD-01"}]
На с++ пишу клиента, решил не заморачиваться с библиотекой gSoap, раз получилось получить данные CURL`ом.

Подскажите как правильно это на с++ реализовать.

Код:
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
#include <stdio.h>
#include <cstddef>
#include <string>
#include <curl/curl.h>
 
 
// write the data into a `std::string` rather than to a file.
/*std::size_t write_data(void* buf, std::size_t size, std::size_t nmemb,
                       void* userp)
{
    if(auto sp = static_cast<std::string*>(userp))
    {
        sp->append(static_cast<char*>(buf), size * nmemb);
        return size * nmemb;
    }
 
    return 0;
}*/
 
std::string buffer;
 
size_t curl_write( void *ptr, size_t size, size_t nmemb, void *stream)
{
    buffer.append((char*)ptr, size*nmemb);
    return size*nmemb;
}
 
int main(void)
{
    CURL *curl;
    CURLcode res;
 
    buffer="";
 
    /* In Windows, this inits the Winsock stuff */
    curl_global_init(CURL_GLOBAL_ALL);
 
    /* get a curl handle */
    curl = curl_easy_init();
    if(curl) {
 
        char outfilename[FILENAME_MAX] = "SMSCenterService.wsdl";
        FILE *fp = fopen(outfilename,"wb");
        /* First set the URL that is about to receive our POST. This URL can
       just as well be an https:// URL if that is what should receive the
       data. */
        //curl_easy_setopt(curl, CURLOPT_URL, "http://A104003053:9001/SMSCenter/GetDeviceList");
        curl_easy_setopt(curl, CURLOPT_URL,"http://A104003053:9001/SMSCenter?SingleWSDL");
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, "http://A104003053:9001/SMSCenter/GetDeviceList");
        curl_easy_setopt(curl, CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE);
        //curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_MAX_TLSv1_2);
        /*curl_easy_setopt(curl, CURLOPT_HEADER, 0);*/
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write);
 
        //Write WSDL to File from Service
        /*curl_easy_setopt(curl, CURLOPT_WRIT
        curl_easy_setopt(curl, CURLOPT_POST, 1L);EFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_URL,"http://A104003053:9001/SMSCenter&SingleWSDL");
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);*/
 
        /* Now specify the POST data */
        //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
 
        /* Perform the request, res gets the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        else
            fprintf(stderr, buffer.c_str());
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    return 0;
}
В результате выдаетcя следующая ошибка:
Code
1
curl_easy_perform() failed: Out of memory
Добавлено через 4 минуты
В файле SMSCenterService.wsdl храниться xsd схема сервиса, ее так же можно получить по адресу : http://A104003053:9001/SMSCenter?SingleWSDL
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2025, 17:26
Ответы с готовыми решениями:

Олицетворение (impersonating) системных учетных записей (NETWORK SERVICE, LOCAL SERVICE и пр.)
Возникла необходимость олицетворения потоком произвольной учетной записи, в т.ч. и системной....

CURL *curl;
CURL *curl; опишите подробно что здесь все это значит. Я на php только профи.

curl неразрешенный внешний символ __imp_curl_easy_cleanup.curl
Привет. Сбилдил, закинул файлы curl в проект, подключил: #include &quot;curl\curl.h&quot; Запустил...

7
0 / 0 / 0
Регистрация: 30.12.2022
Сообщений: 15
05.04.2025, 00:01  [ТС]
Хотел бы так же возможность подключения с помощью сокетов.
Наверное это будет трудоемкая реализация клиента для WCF сервиса.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
05.04.2025, 07:27
Цитата Сообщение от Alexoidic Посмотреть сообщение
Хотел бы так же возможность подключения с помощью сокетов.
Наверное это будет трудоемкая реализация клиента для WCF сервиса.
Ненамного сложнее, чем через cURL.

Как я понимаю там HTTP в качестве транспорта, а сам обмен происходит в виде XML

Потребуется реализовать парсер HTTP + разбор/формирование XML(что для cURL тоже нужно будет делать).

С другой стороны раз сервис предоставляет описание схемы, то почему бы не сгенерировать по ней методы для клиента?

Добавлено через 29 минут
Цитата Сообщение от Alexoidic Посмотреть сообщение
В результате выдаетcя следующая ошибка:
Не в том формате данные:
C
1
2
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
                          struct curl_httppost *formpost);
https://curl.se/libcurl/c/CURLOPT_HTTPPOST.html

Добавлено через 10 минут
Цитата Сообщение от Alexoidic Посмотреть сообщение
Результат:
По виду это просто JSON
Цитата Сообщение от Alexoidic Посмотреть сообщение
Get
Предположу, что оно на любой тип запроса данные отдает.
И достаточно GET запроса.

Добавлено через 14 минут
Для GET запроса

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
#include <curl/curl.h>
 
#include <iostream>
 
size_t on_write(char * ptr, size_t size, size_t nmemb, std::string *data)
{
    size_t full_sz = size * nmemb;
 
    data->append(ptr, full_sz);
    return full_sz;
}
 
int main()
{
    auto ret_init = curl_global_init(CURL_GLOBAL_ALL);
    if (ret_init != CURLcode::CURLE_OK)
    {
        std::cerr << "Unable init" << std::endl;
        return EXIT_FAILURE;
    }
    auto easy = curl_easy_init();
    if (!easy)
    {
        std::cerr << "Unable init(easy)" << std::endl;
    }
    else
    {
        std::string response, headers;
        curl_easy_setopt(easy, CURLOPT_URL, "http://ya.ru/");
        curl_easy_setopt(easy, CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE);
        curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, &on_write);
        curl_easy_setopt(easy, CURLOPT_WRITEDATA, &response);
        curl_easy_setopt(easy, CURLOPT_HEADERFUNCTION, &on_write);
        curl_easy_setopt(easy, CURLOPT_HEADERDATA, &headers);
 
        auto ret_run = curl_easy_perform(easy);
        if (ret_run != CURLE_OK)
        {
            std::cerr << "Error: " << curl_easy_strerror(ret_run) << std::endl;
        }
        else
        {
            std::cout << "Ok" << std::endl;
            std::cout << headers << std::endl;
            std::cout << response << std::endl;
        }
 
 
        curl_easy_cleanup(easy);
    }
    curl_global_cleanup();
    return EXIT_SUCCESS;
}
1
0 / 0 / 0
Регистрация: 30.12.2022
Сообщений: 15
08.04.2025, 11:23  [ТС]
Вот что у меня получилось, теперь хочю json-строку преобразовать в класс, может кто подскажет как это сделать с использованием наименьшего количества библиотек, но не писать парсер с нуля:
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
#include <stdio.h>
#include <curl/curl.h>
#include <json-parser/json.h>
#include <string>
#include <iostream>
#include <fstream>
 
static std::string buffer;
 
size_t write_data(char *ptr, size_t size, size_t count, std::string *buffer)
{
    int result = 0;
    //проверяем буфер
    if (buffer != NULL)
    {
        //добавляем к буферу строки из data, в количестве nmemb
        buffer->append(ptr, size * count);
        //вычисляем объем принятых данных
        //printf("DATA: %s", (char*)ptr);
        //printf("DATA: %s", ptr);
        result = size * count;
    }
    //вовзращаем результат
    //printf("DATA: %s", (char*)ptr);
    //printf("DATA: %s", ptr);
    return result;
        //printf("DATA: %s", (char*)ptr);
        //return count*size;
}
 
int main(void)
{
    CURL *curl;
    CURLcode res;
    struct curl_slist *headerlist=NULL;
 
    char outfilename[FILENAME_MAX] = "/home/a1214@******.ru/SMSCenterService.wsdl";
 
    std::ifstream t(outfilename);
    t.seekg(0, std::ios::end);
    size_t size = t.tellg();
    std::string request(size, ' ');
    t.seekg(0);
    t.read(&request[0], size);
 
    //printf("%s", request);
    //fprintf(stderr, "WSDL: %s\n", request.c_str());
 
    //headerlist = curl_slist_append(headerlist, "Content-Type:text/xml");
    headerlist = curl_slist_append(headerlist, "Accept: application/json");
    /* In windows, this will init the winsock stuff */
    curl_global_init(CURL_GLOBAL_ALL);
 
    /* get a curl handle */
    curl = curl_easy_init();
    if(curl) {
        /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */
 
        curl_easy_setopt(curl, CURLOPT_URL, "http:/A104003053.*******.ru:9001/SMSCenter/GetDeviceList");
        //указываем прокси сервер
        curl_easy_setopt(curl, CURLOPT_PROXY, "10.4.***.6:*****");
        curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "*****@*****.ru:*****");
        //curl_easy_setopt(curl, CURLOPT_USERPWD, "user2:000");
 
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST,"POST");
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT,10);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        else
            std::cout << "Server response:"<<buffer << "\n";
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    //curl_formfree(formpost);
    curl_slist_free_all (headerlist);
    return 0;
}
xsd-схему (SingleWSDL) я читаю из файла полностью и передаю на сервис, как они там друг друга понимают я не особо понимаю, но это работает, функция GetDeviceList не принимает никаких параметров, я предполагаю, что у меня возникнут проблемы с передачей параметров, скорее всего их нужно будет передавать в тоже виде json-строки.

Результат полученный от сервиса:
JSON
1
[{"PortID":0,"PortName":"COM5","PortUse":true,"HardDeviceID":"USB\\VID_12D1&SUBCLASS_03&PROT_10\\6&677674A&0&0000","InitializationCommands":"","DeviceName":"HUAWEI Mobile Connect - Modem","IMEIDevice":"866119028926443","SimCCID":"250022481227066","SMSCount":0,"SimDescription":"Показания","UseMailListID":0,"StartTime":"2025-04-08T08:30:00","EndTime":"2025-04-08T18:30:00","PC_Name":"server"}]
Нашел Сайт (https://jsonformatter.org/json-to-cpp), он мне сгененрировал код на С++, как его использовать, подскажите пожалуйста:
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
#pragma once
 
#include <boost/optional.hpp>
#include <stdexcept>
#include <regex>
 
class Welcome8Element {
    public:
    Welcome8Element() = default;
    virtual ~Welcome8Element() = default;
 
    private:
    int64_t port_id;
    std::string port_name;
    bool port_use;
    std::string hard_device_id;
    std::string initialization_commands;
    std::string device_name;
    std::string imei_device;
    std::string sim_ccid;
    int64_t sms_count;
    std::string sim_description;
    int64_t use_mail_list_id;
    std::string start_time;
    std::string end_time;
    std::string pc_name;
 
    public:
    const int64_t & get_port_id() const { return port_id; }
    int64_t & get_mutable_port_id() { return port_id; }
    void set_port_id(const int64_t & value) { this->port_id = value; }
 
    const std::string & get_port_name() const { return port_name; }
    std::string & get_mutable_port_name() { return port_name; }
    void set_port_name(const std::string & value) { this->port_name = value; }
 
    const bool & get_port_use() const { return port_use; }
    bool & get_mutable_port_use() { return port_use; }
    void set_port_use(const bool & value) { this->port_use = value; }
 
    const std::string & get_hard_device_id() const { return hard_device_id; }
    std::string & get_mutable_hard_device_id() { return hard_device_id; }
    void set_hard_device_id(const std::string & value) { this->hard_device_id = value; }
 
    const std::string & get_initialization_commands() const { return initialization_commands; }
    std::string & get_mutable_initialization_commands() { return initialization_commands; }
    void set_initialization_commands(const std::string & value) { this->initialization_commands = value; }
 
    const std::string & get_device_name() const { return device_name; }
    std::string & get_mutable_device_name() { return device_name; }
    void set_device_name(const std::string & value) { this->device_name = value; }
 
    const std::string & get_imei_device() const { return imei_device; }
    std::string & get_mutable_imei_device() { return imei_device; }
    void set_imei_device(const std::string & value) { this->imei_device = value; }
 
    const std::string & get_sim_ccid() const { return sim_ccid; }
    std::string & get_mutable_sim_ccid() { return sim_ccid; }
    void set_sim_ccid(const std::string & value) { this->sim_ccid = value; }
 
    const int64_t & get_sms_count() const { return sms_count; }
    int64_t & get_mutable_sms_count() { return sms_count; }
    void set_sms_count(const int64_t & value) { this->sms_count = value; }
 
    const std::string & get_sim_description() const { return sim_description; }
    std::string & get_mutable_sim_description() { return sim_description; }
    void set_sim_description(const std::string & value) { this->sim_description = value; }
 
    const int64_t & get_use_mail_list_id() const { return use_mail_list_id; }
    int64_t & get_mutable_use_mail_list_id() { return use_mail_list_id; }
    void set_use_mail_list_id(const int64_t & value) { this->use_mail_list_id = value; }
 
    const std::string & get_start_time() const { return start_time; }
    std::string & get_mutable_start_time() { return start_time; }
    void set_start_time(const std::string & value) { this->start_time = value; }
 
    const std::string & get_end_time() const { return end_time; }
    std::string & get_mutable_end_time() { return end_time; }
    void set_end_time(const std::string & value) { this->end_time = value; }
 
    const std::string & get_pc_name() const { return pc_name; }
    std::string & get_mutable_pc_name() { return pc_name; }
    void set_pc_name(const std::string & value) { this->pc_name = value; }
};
 
namespace codebeautify {
    using Welcome8 = std::vector<Welcome8Element>;
}
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
08.04.2025, 17:41
Цитата Сообщение от Alexoidic Посмотреть сообщение
xsd-схему (SingleWSDL) я читаю из файла полностью и передаю на сервис, как они там друг друга понимают я не особо понимаю,
Схему на сервис передавать не нужно.
Это просто описание методов для клиентов.
В ней описаны методы сервиса и списки их параметров.
По ней можно сгенерировать код клиента на нужном ЯП.
В качестве библиотеки для разбора/формирования JSON можно использовать например jsoncons
1
0 / 0 / 0
Регистрация: 30.12.2022
Сообщений: 15
09.04.2025, 14:18  [ТС]
Схему на сервис передавать не нужно.

Рабочая реализация:
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
#include <stdio.h>
#include <curl/curl.h>
#include <json-parser/json.h>
#include <string>
#include <iostream>
#include <fstream>
 
static std::string buffer;
 
size_t write_data(char *ptr, size_t size, size_t count, std::string *buffer)
{
    int result = 0;
    //проверяем буфер
    if (buffer != NULL)
    {
        //добавляем к буферу строки из data, в количестве nmemb
        buffer->append(ptr, size * count);
        //вычисляем объем принятых данных
        //printf("DATA: %s", (char*)ptr);
        //printf("DATA: %s", ptr);
        result = size * count;
    }
    //вовзращаем результат
    //printf("DATA: %s", (char*)ptr);
    //printf("DATA: %s", ptr);
    return result;
        //printf("DATA: %s", (char*)ptr);
        //return count*size;
}
 
int main(void)
{
    CURL *curl;
    CURLcode res;
    struct curl_slist *headerlist=NULL;
 
    char outfilename[FILENAME_MAX] = "/home/a1214@******.ru/SMSCenterService.wsdl";
 
    std::ifstream t(outfilename);
    t.seekg(0, std::ios::end);
    size_t size = t.tellg();
    std::string request(size, ' ');
    t.seekg(0);
    t.read(&request[0], size);
 
    //printf("%s", request);
    //fprintf(stderr, "WSDL: %s\n", request.c_str());
 
    //headerlist = curl_slist_append(headerlist, "Content-Type:text/xml");
    headerlist = curl_slist_append(headerlist, "Accept: application/json");
    /* In windows, this will init the winsock stuff */
    curl_global_init(CURL_GLOBAL_ALL);
 
    /* get a curl handle */
    curl = curl_easy_init();
    if(curl) {
        /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */
 
        curl_easy_setopt(curl, CURLOPT_URL, "http:/A104003053.*******.ru:9001/SMSCenter/GetDeviceList");
        //указываем прокси сервер
        curl_easy_setopt(curl, CURLOPT_PROXY, "10.4.***.6:*****");
        curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "*****@*****.ru:*****");
        //curl_easy_setopt(curl, CURLOPT_USERPWD, "user2:000");
 
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST,"POST");
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT,10);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        else
            std::cout << "Server response:"<<buffer << "\n";
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    //curl_formfree(formpost);
    curl_slist_free_all (headerlist);
    return 0;

Если я закомментирую данную строку в клиенте:
C++
1
//curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);
то сервис мне выдаёт:
HTML5
1
2
3
4
5
6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Length Required</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Length Required</h2>
<hr><p>HTTP Error 411. The request must be chunked or have a content length.</p>
</BODY></HTML>
а если присвоить NULL:
C++
1
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, NULL);
тогда отладчик клиента утопает в режиме ожидания здесь:
C++
1
res = curl_easy_perform(curl);
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
10.04.2025, 18:36
Alexoidic, к сожалению не известно, что у Вас там за сервис и что подавать ему на вход.
1
0 / 0 / 0
Регистрация: 30.12.2022
Сообщений: 15
04.05.2025, 10:36  [ТС]
Max Dark, вы были правы, строку : curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);
Не нужно было комментировать а сделать пустой: curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2025, 10:36
Помогаю со студенческими работами здесь

Как создать проект cURL в CLion? (Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)
- cURL установил через vcpkg - В CMakeList прописал: find_package(CURL REQUIRED) ...

Проблема со скачивание .exe ,используя <curl/curl.h>
Всем доброго времени суток! Проблема: не скачивается .exe по ссылке. Причем .pdf скачивается...

Ошибки при импортировании веб-сервиса с помощью WSDL importer из файла
Приветствую! Импортировал веб-сервис с помощью WSDL importer из файла. Пытаюсь компилить -...

Проект Windows Service в Visual Studio
Я честно сразу признаюсь, что в написании Windows Service полный ноль! В интернете нащёл, как...

Написать Service Application, что бы этот сервис висел в службах и работал
Доброго времени суток друзья. Создал Service Application прога компилируеться в *.exe,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru