Мне нужно отправить сообщение через интернет

Пробовал так:

#define PORT xxxxx
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "ws2_32.lib")

int Client() {
    struct sockaddr_in server_addr;
    int sock = 0, value;
    const char* helloclient = "Client Hello";
    char buffer[1024] = { 0 };

    // инициализация библиотеки Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "Failed to initialize Winsock" << std::endl;
        return 1;
    }

    // создаём сокет
    sock = socket(AF_INET, SOCK_STREAM, 0);

    // настраиваем объект сокета
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(PORT);

    // форматируем IP-адрес в бинарный формат
    inet_pton(AF_INET, "xxx.xxx.xxx.xxx", &server_addr.sin_addr);

    // подсоединяемся к серверу
    connect(sock, (struct sockaddr*) & server_addr, sizeof(server_addr));

    // отсылаем сообщение серверу
    send(sock, helloclient, strlen(helloclient), 0);

    // читаем ответ от сервера
    value = recv(sock, buffer, 1024, 0);
    printf("%s\n", buffer);

    // закрываем сокет
    closesocket(sock);

    // выгружаем библиотеку Winsock
    WSACleanup();

    return 0;
}

int main() {
    Client();
    return 0;
}

Но так получается отправить сообщение только для компьютеров в одной сети. А если компьютер находится в сети интернет, то ничего не работает.

Однако у меня есть своя страница в интернете. Может, получится передать сообщение хотя бы на этот хостинг, но как?


Ответы (1 шт):

Автор решения: user580201

Для случая с FTP:

#include <iostream>
#include <curl/curl.h>

int main() {
CURL *curl;
CURLcode res;
FILE *file;

// Инициализация библиотеки libcurl
curl_global_init(CURL_GLOBAL_DEFAULT);

// Создание объекта CURL
curl = curl_easy_init();
if(curl) {
// Установка URL-адреса FTP-сервера
curl_easy_setopt(curl, CURLOPT_URL, 
"ftp://example.com/path/to/destination/file.txt");

// Установка имени пользователя и пароля для авторизации на FTP-сервере
curl_easy_setopt(curl, CURLOPT_USERNAME, "username");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "password");

// Установка опции для загрузки файла
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);

// Открытие локального файла
fopen_s(&file, "local_file.txt", "rb");
if(file) {
// Установка пути к локальному файлу
curl_easy_setopt(curl, CURLOPT_READDATA, file);

// Выполнение запроса
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "Ошибка при отправке файла: %s\n", curl_easy_strerror(res));
}

// Закрытие локального файла
fclose(file);
} else {
fprintf(stderr, "Не удалось открыть локальный файл\n");
}

    // Освобождение ресурсов     curl_easy_cleanup(curl); }

// Освобождение глобальных ресурсов libcurl
curl_global_cleanup();

return 0;
}
→ Ссылка