Programing

boost :: asio :: ip :: tcp :: socket의 IP 주소를 얻는 방법은 무엇입니까?

crosscheck 2021. 1. 7. 19:42
반응형

boost :: asio :: ip :: tcp :: socket의 IP 주소를 얻는 방법은 무엇입니까?


Boost ASIO 라이브러리를 사용하여 C ++로 서버를 작성하고 있습니다. 내 서버의 로그에 표시 할 클라이언트 IP의 문자열 표현을 얻고 싶습니다. 누구든지 그것을하는 방법을 알고 있습니까?


소켓에는 원격 끝점을 검색하는 기능이 있습니다. 이 (오래된) 명령 체인을 사용하면 원격 끝 IP 주소의 문자열 표현을 검색해야합니다.

asio::ip::tcp::socket socket(io_service);
// Do all your accepting and other stuff here.

asio::ip::tcp::endpoint remote_ep = socket.remote_endpoint();
asio::ip::address remote_ad = remote_ep.address();
std::string s = remote_ad.to_string();

또는 한 줄짜리 버전 :

asio::ip::tcp::socket socket(io_service);
// Do all your accepting and other stuff here.

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

또는 다음을 사용하면 훨씬 더 쉽습니다 boost::lexical_cast.

#include <boost/lexical_cast.hpp>

std::string s = boost::lexical_cast<std::string>(socket.remote_endpoint());

참조 URL : https://stackoverflow.com/questions/601763/how-to-get-ip-address-of-boostasioiptcpsocket

반응형