2013-12-14 2 views
0

나는 내 서버에서이 코드는 (등 생성자에 흩어져하지만 불필요한 부분을 떠 났어요)이 있습니다0.0.0.0 IP

using namespace boost::asio; 
io_service ioserv; 
ip::tcp::endpoint endpoint(ip::tcp::v4(), 1922); 
ip::tcp::acceptor acceptor(ioserv, endpoint); 
ip::tcp::socket socket(ioserv); 
acceptor.accept(socket); 

지금 내 IP를 작성하려면 콘솔에. 불행하게도

cout << endpoint.address() << endl; 

cout << acceptor.local_endpoint().address() << endl; 

인쇄 모두

0.0.0.0 

어떻게 내 컴퓨터의 IP 주소를 얻는 방법?

답변

1

그 코드를 어디서 들었습니까?

#include <boost/asio.hpp> 
using boost::asio::ip::tcp;  

boost::asio::io_service io_service; 
tcp::resolver resolver(io_service); 
tcp::resolver::query query(boost::asio::ip::host_name(), ""); 
tcp::resolver::iterator iter = resolver.resolve(query); 
tcp::resolver::iterator end; // End marker. 
while (iter != end) 
{ 
    tcp::endpoint ep = *iter++; 
    std::cout << ep << std::endl; 
} 

을 그리고 this discussion에서 살펴 :

이보십시오.

+0

질문에 대답 : 내가 말했듯이, 나는 불필요한 부분을 버렸습니다. 서버가 연결을 받아들이 기 때문에 수용자가 있습니다. 단순함을 위해, 나는 그러한 수용을 하나만 포함했다. 내 코드에 문제가 있습니까? – marczellm

1

기본 바인딩 주소는 INADDR_ANY이며 0.0.0.0입니다. 이는 소켓이 모든 인터페이스를 통한 연결을 허용한다는 것을 의미합니다. 귀하의 코드는 귀하의 IP 주소를 확인하는 올바른 방법이 아니라는 점을 제외하고는 완벽하게 정확합니다. 소켓을 전혀 만들지 않고 소켓 API를 통해 직접 가져올 수 있습니다.

관련 문제