Как связаться с сервером по белому IP-адресу?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как связаться с сервером по белому IP-адресу?

Сообщение Anonymous »

Сегодня у меня возникла проблема с доступом к серверу по белому IP-адресу... Мой сервер не получает (или не видит) ни одного запроса. Купил белый ip адрес, после этого задал настройки, при которых роутер должен добираться до локального адреса по белому ip адресу, который выглядит так:

Код: Выделить всё

inner ip address: 192.168.1.194
inner port: 12345

external ip address: 45.####.####.####
external port: 8888
вернёмся к проблеме. Я создал две программы: «client.exe» и «server.exe», все они были созданы с использованием библиотеки C++ Boost Asio. Сервер и клиент отлично работают с серым IP-адресом, но не с белым IP-адресом...
Клиент говорит (используя белый IP-адрес):

Код: Выделить всё

Exception: connect: The connection was not established because the destination computer rejected the connection request [system:10061 at boost_1_86_0/boost/asio/detail/win_iocp_socket_service.hpp:629 in function 'connect']
Вот весь этот код (Client.cpp, Server.cpp):
сервер:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using boost::asio::ip::tcp;

// U W U //
template class Packet_info{
std::vector info;
int rsize = 0;
public:
//атрибуты
int last_sent_data = 0;
bool sent_primary_data = false;
bool received = false;
T_info size;
T_info receiver;
T_info received_msg;
T_info reserved_msg;
T_info id;

//функции
void add_info(T_info value){
this->info.push_back(value);
this->rsize++;
this->size = std::to_string(rsize);
};
T_info get_info(int index){
return *(info.begin()+index);
};
T_info get_packet(){
T_info res(reserved_msg);
if(received){
res = received_msg;
}
else{
if(!sent_primary_data){
int current_data_to_send = last_sent_data;
last_sent_data++;
if(current_data_to_send == 0){
res = size;
}else if(current_data_to_send == 1){
res = receiver;
}
else{
sent_primary_data = true;
last_sent_data = 0;
};
};
if(sent_primary_data){
int current_data_to_send = last_sent_data;
last_sent_data++;
if((info.begin() + current_data_to_send) != info.end())
//не дошло до конца массива
res = info[current_data_to_send];
else{
//блокировка пакета к отправке
received = true;
};
};
};
return res;
};
bool operator==(Packet_info packet){
int size = 0;
for (auto& i : info)
size += 1;

int i_int = 0;
int equalings = 0;
for(auto i = info.begin(); i != info.end(); i++){
if((*i) == packet.get_info(i_int))
equalings++;
i_int++;
};

if(size == equalings)
return true;
else
return false;
}
};

class Send_service{
std::vector
> packets;
public:
void add_packet(std::string receiver, std::string packet_id, std::vector vec){
Packet_info new_packet;
new_packet.received_msg = "already_received";
new_packet.receiver = receiver;
new_packet.reserved_msg = "nothing was returned";

for(auto i = vec.begin(); i != vec.end(); i++){
new_packet.add_info((*i));
};

packets.push_back(new_packet);
};

std::string process_receiver(std::string receiver, std::string packet_id){
std::string part_of_packet = "not found";
for(auto i = packets.begin(); i != packets.end(); i++){
if((*i).receiver == receiver){
part_of_packet = (*i).get_packet();
break;
};
};
for (auto i = packets.begin(); i != packets.end();) {
if (i->received == true) {
i = packets.erase(i); // Присваиваем i возвращенный итератор
} else {
++i; // Увеличиваем только если не удалили
}
}

return part_of_packet;
};
};

Send_service Send_service;

class session : public std::enable_shared_from_this  {
public:
session(tcp::socket socket) : socket_(std::move(socket)) {}

void start() {
do_read();
}

private:
void do_read() {
auto self(shared_from_this());
socket_.async_read_some(boost::asio::buffer(data_, max_length),
[this, self](boost::system::error_code ec, std::size_t length)
{
if (!ec) {
do_process(length);
} else {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79346447/how-to-reach-the-server-within-white-ip-address[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как связаться с сервером по белому IP-адресу?
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как связаться с сервером по белому IP-адресу?
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как связаться с сервером по белому IP-адресу?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как связаться с сервером по белому IP-адресу?
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Невозможно связаться с сервером LDAP через ldap_bind($con, $rdn, $pwd)
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»