ページ 11

IPv4アドレス取得

Posted: 2016年6月05日(日) 10:08
by inec0310
C++でIPv4アドレスを取得する際最も簡単な方法は何でしょうか
私が思い浮かぶ限り

コード:

string getIPAddress()
{
  string ipaddress = "";
  IPHostEntry ipentry = Dns.GetHostEntry(Dns.GetHostName());
 
  foreach (IPAddress ip in ipentry.AddressList)
  {
    if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
    {
      ipaddress = ip.ToString();
      break;
    }
  }
  return ipaddress;
}
しか無いのですが、もっといい方法を知っている方教えて下さい

Re: IPv4アドレス取得

Posted: 2016年6月05日(日) 10:24
by みけCAT
何のIPv4アドレスを取得したいのですか?
何でもいいなら、直接埋め込むのが簡単でしょう。
例えば

コード:

std::string ipv4addr = "0.0.0.0";
オフトピック
提示されたコードにはC++の標準機能でないものが使用されているように見えますが、何のライブラリでしょうか?

Re: IPv4アドレス取得

Posted: 2016年6月05日(日) 10:35
by inec0310
グローバルIPアドレスというのでしょうかそれを取得したいです

Re: IPv4アドレス取得

Posted: 2016年6月05日(日) 13:26
by YuO
なんのために取得したいのか,ちょっと理解に苦しむのですが (普通,自分のIPアドレスを知る必要はない),
IPv4アドレスを返すようなweb serviceを作っておいて,そこへリクエストを投げて返ってきた値で知ればよいのではないでしょうか。

Re: IPv4アドレス取得

Posted: 2016年6月05日(日) 14:11
by みけCAT
YuO さんが書きました:IPv4アドレスを返すようなweb serviceを作っておいて,そこへリクエストを投げて返ってきた値で知ればよいのではないでしょうか。
わざわざweb serviceを作るくらいなら、STUNサーバーなどの既存のサービスを使えばよいのではないでしょうか。
STUN - Wikipedia
RFC 5389 - Session Traversal Utilities for NAT (STUN)
STUN server list · GitHub
【C++】STUNサーバーにグローバルIPアドレスを問い合わせる • C言語交流フォーラム ~ mixC++ ~

Re: IPv4アドレス取得

Posted: 2016年6月05日(日) 14:57
by inec0310
YuOさん、みけCATさんありがとうございます。
やはりたくさんの方法があるのですね

Re: IPv4アドレス取得

Posted: 2016年6月07日(火) 18:11
by inec0310
いい方法?を見つけさせていただきましたので一応の報告
DXライブラリの非公開関数らしいのですが
GetMyIPAddress() //自分のIPを得る
というのが有りましたw

Re: IPv4アドレス取得

Posted: 2016年6月07日(火) 20:43
by softya(ソフト屋)
inec0310 さんが書きました:いい方法?を見つけさせていただきましたので一応の報告
DXライブラリの非公開関数らしいのですが
GetMyIPAddress() //自分のIPを得る
というのが有りましたw
それは、ルータがある場合やCATVのインターネット環境なら、ローカルIPアドレスである確率が高い取得方法ですよ。
みけCATさんの方法でないと出来ません。