Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2021, 18:00   #11
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
Посмотрите как я поменял название вашей темы и сравните с тем что вы там писали.
Серьёзно? Прога должна через другую прогу (браузер) выдавать команды третьей (апачу) и получить данные назад опять через браузер? Очевидно же, что если бы он писал клиенсткую софтину, то предпочёл бы одно звено пропустить и не мучиться с разными браузерами, а копать только один стадартный протокол, а софтина должна была бы сама притворяться браузером. И не мните себя телепатом. Очевидно же, что он лучше Вас знает свои желания. И если уж он толкует о получении команд из браузера и ответа в бразуер, то именно это и имел ввиду.
taras-proger77 вне форума Ответить с цитированием
Старый 23.10.2021, 20:08   #12
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Концепцию я осознал, но перед реализацией решил написать небольшой сервер и клиент, чтобы проверить получится ли начать обмен данными. Но смог подключиться только локально, после переконфигурации на работу по внешнему ip это уже не получилось. Сервер у меня на линукс, порт открывается.

Я не понимаю, в чем может быть проблема, код банальный, что я упускаю?

Сервер:
Код:
#include <iostream>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sstream>

int main(int argc, char* argv[])
{
    std::cout << "Server start" << std::endl;
    
    // Структура сокета
    sockaddr_in addr;
    socklen_t sizeofAddr = sizeof(addr);
    addr.sin_addr.s_addr = inet_addr("217.25.25.25");
    addr.sin_port = htons(84);
    addr.sin_family = AF_INET;

    // Создаем сокет
    int sListen = socket(AF_INET, SOCK_STREAM, 0);
    if (sListen < 0)
    {
        std::cout << "Socket not open" << std::endl;
        exit(1);
    }
    std::cout << "Socket open" << std::endl;
    
    // Связываем сокет с его структурой (инициализация)
    if (bind(sListen, (sockaddr*)&addr, sizeof(addr)) < 0)
    {
        std::cout << "Error bind socket" << std::endl;
        exit(1);
    } else
    {
        std::cout << "Bind socket successful. SOMAXCONN: " << SOMAXCONN << std::endl;
    }

    // Прослушиваем
    listen(sListen, SOMAXCONN);
    
    int newConnection;
    while (true)
    {
        newConnection = accept(sListen, (sockaddr*)&addr, &sizeofAddr);
        if (newConnection == 0)
        {
            std::cout << "Error create new connection" << std::endl;
        } else
        {
            std::cout << "Client Connected!" << std::endl;
            std::string message = "Hello. It`s my first network program!";
            int messageSize = message.size();
            send(newConnection, (char*)&message, messageSize, 0);
        }
    }

    close(newConnection);

    std::cout << "Server stopped. Enter a any button to exit...";
    std::cin.clear();
    std::cin.ignore(32767, '\n');
    std::cin.get();
    return 0;
}
Клиент:
Код:
#include <iostream>

#if _WIN32

    #pragma comment(lib,"ws2_32.lib")
    #include <WinSock2.h>
    #pragma warning(disable: 4996)
    #define _WINSOCK_DEPRECATED_NO_WARNINGS
    #define Sleep Sleep(1000);

#elif __linux__

    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #define Sleep sleep(1);

#endif

int main(int argc, char* argv[])
{
    std::cout << "Client start" << std::endl;

    // Структура сокета
    sockaddr_in addr;
    int sizeofAddr = sizeof(addr);
    addr.sin_addr.s_addr = inet_addr("217.25.25.25");
    addr.sin_port = htons(82);
    addr.sin_family = AF_INET;

#if _WIN32
    SOCKET connection;
    connection = socket(AF_INET, SOCK_STREAM, NULL);
    while (connect(connection, (SOCKADDR*)&addr, sizeof(addr)) != 0)
#elif __linux__
    int connection;
    connection = socket(AF_INET, SOCK_STREAM, 0);
    while (connect(connection, (sockaddr*)&addr, sizeof(addr)) != 0)
#endif
    {
        std::cout << "Error: fail connected to server.\n";
        Sleep;
    }
    std::cout << "Connected!\n";

    while (true)
    {
        char* message = new char[100];
        message[99] = '\0';
#if _WIN32
        recv(connection, message, 99, NULL);
#elif __linux__
        recv(connection, message, 99, 0);
#endif
        std::cout << message << std::endl;
        delete[] message;
    }

    std::cout << "Client stopped. Enter a any button to exit...";
    std::cin.clear();
    std::cin.ignore(32767, '\n');
    std::cin.get();
    return 0;
}
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Старый 28.10.2021, 22:50   #13
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Вопрос решен, как оказалось, еще нужно настраивать маршрутизатор на сервере.

П.С. проблема была не в разных портах =D
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не получается подключить css через link как бы я не старался. Браузер видит только через теги <style></style>. [Mafia]Parallax HTML и CSS 1 12.03.2019 01:35
Управление программой через браузер medved6216 Работа с сетью в Delphi 2 19.02.2013 13:30
Как через веб браузер прочитать html код troyan32 Общие вопросы Delphi 5 05.03.2011 17:32
Проблема с загрузкой через браузер pavel42 Компьютерное железо 0 05.06.2010 23:13