получить IP-адрес от удаленного клиента: remote_endpoint: конечная точка транспорта не подключена - PullRequest
0 голосов
/ 19 июня 2019

Кто-нибудь знает, как получить IP-адрес удаленного клиента из сокета? я пробовал эту функцию: я пытался использовать эту функцию:

std::string s =socket.remote_endpoint().address().to_string();    

но я всегда получаю следующую ошибку, даже если могу пинговать с клиента и на него: прерывание вызывается после создания экземпляра 'boost :: exception_detail :: clone_impl>' what (): remote_endpoint: конечная точка транспорта не подключена ^ [[AAbandon (ядро сброшено)

есть ли способ получить IP-адрес отправителя (ps: хотите использовать его для проверки перед отправкой данных)

boost::asio::io_service io_service;
boost::asio::ip::udp::socket socket(io_service);
socket.open(boost::asio::ip::udp::v4());
socket.bind(boost::asio::ip::udp::endpoint(
boost::asio::ip::udp::v4(),port));

std::cout << "Ready to receive" << std::endl;

//information about where the packets come from
boost::asio::ip::udp::endpoint sender;
/////retrieve ip
std::string s =socket.remote_endpoint().address().to_string(); 
std::cout << "The client's ip is:" << s << std::endl;

1 Ответ

0 голосов
/ 19 июня 2019
struct sockaddr_in sAddr;
socklen_t sLen = sizeof sAddr;
[your socket] = accept([socket to listen], (struct sockaddr *) &sAddr, &sLen);

printf("%s",inet_ntoa(sAddr.sin_addr));

Заменить your socket и socket to listen на ваши.

...