2012-02-22 17 views
1

ホスト名(コンピュータ名マイコンピュータ - >プロパティ - >事前設定システム - >コンピュータ名)をIPアドレスに変換したい。Windowsソケットのプログラミングでホスト名からのIPアドレス

ホスト名をIPアドレスに変換する方法はありますか? 私は次のようにしてみましたが、pHostInfoがNULLになっています。 、hostnameは自分のコンピュータ名です。

struct hostent* pHostInfo; 
pHostInfo = gethostbyname(hostname); 

上記のコードではNULLになっています。ホスト名をIPアドレスに変換するコードを教えてください。

+0

'WSAGetLastError()は'あなたに何を教えてくれありませんか? –

答えて

0

gethostname()を使用してローカルホスト名を取得します。それをgethostbyname()に渡すことができます。

しかし、gethostbyname()はローカルホストにもDNSルックアップを実行するため、実際にローカルマシンに属していないIPアドレスやDNSが誤って設定されていると無効なIPを取得する可能性があります。

ローカルマシンのIPアドレスを取得するだけの場合は、代わりにGetAdaptersInfo()またはGetAdaptersAddresses()を使用してください。

2

チェックgetaddrinfo機能! Windows XP SP2(またはそれ以上)でIPv6アドレスを検索する場合は、GetAddrInfoW機能を使用する必要があります。どちらの関数も、ドキュメントに例を示しています。 IPv4および/またはMS Vista以上で作業している場合は、プラットフォームに依存しないためにgetaddrinfoを選択する必要があります(POSIX.1-2001)。

0
#include <string> 

#include <netdb.h> 
#include <arpa/inet.h> 

std::string HostToIp(const std::string& host) { 
    hostent* hostname = gethostbyname(host.c_str()); 
    if(hostname) 
     return std::string(inet_ntoa(**(in_addr**)hostname->h_addr_list)); 
    return {}; 
} 
関連する問題