PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
14291 01/01/16 13:42:20 RE(5):WinSockでローカルIPアドレスを取得する方法 By Taka
14288 01/01/16 12:46:50 RE(4):WinSockでローカルIPアドレスを取得する方法 By ryochan
14285 01/01/16 11:41:21 RE(3):WinSockでローカルIPアドレスを取得する方法 By Taka
14284 01/01/16 09:26:23 RE(2):WinSockでローカルIPアドレスを取得する方法 By ryochan
14277 01/01/14 09:15:54 RE(1):WinSockでローカルIPアドレスを取得する方法 By Taka
14263 01/01/11 01:28:34 PB7.0: ローカルIPアドレスをとりたい。 By の?やん

カテゴリ:スクリプトの記述
日付:2001年01月16日 12:46 発信者:ryochan
題名:RE(4):WinSockでローカルIPアドレスを取得する方法

Takaさん、こんにちは。

>ほとんどの場合IPアドレスは1個だけだと思うので、単純にダブルポインタ的に
>処理すればいいかと思ったのですが、やはりきちんとやったほうが良いのでしょうか...
普通はTakaさんのおっしゃる通り、システム用PCでしたら1個でOKだと思います。
実は昔、WinsockもIPアドレスを1個しか取得できませんでした。
それでcのマクロのh_addrはh_addr_list[0]としています(互換の為)。 
ただ、最近のPCってIEEE1394(i-Link)アダプターがついていて、
もしかしたら、そのアダプターのIP設定が最初に
取得されてしまうかもしれないと思いまして(いらん心配かもしれませんが)。
(私の使用しているのは、Etherが先でした)
でも、IPが複数設定されている場合、これがどのNICを
指しているのかは、また別の処理が必要だと思います。
でも、まだ使用したことがありません。
参考までに、この辺りに載っていると思います。
(新しいOSでないと動かないのもありますが)
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/rras/tcpip_2g6r.htm

もしくは
IPアドレス取得もそうなのですが、
ipcofig /all > テキスト
でテキストファイルを解析した方が簡単かも^^;


>>//IPアドレス配列部のサイズを取得
>>ll_len = len(string(lb_addr))-len(nam)

>これなんですが、私の環境では -len(nam) ではダメなようです。
>gethostnameで取得した文字列ではなく、HOSTENT構造体.h_nameが指している文字列の長さを
>使ってやると、うまくいきました。(ネットワーク環境の設定によって違うのかな?)
>「うまくいきました」と言っても、マルチアドレスの設定ではないのでテストできない...
あれ、そうだったんですか。(汗)
たしかgethostnameはホスト名+ドメイン名で取得していたと
思うのでOKかと思いました。
(実は確認の際、直接指定していました。^^;)
多分、Takaさんの方法がより安全だと思います。

書き忘れましたが、string関数にaddressのフォーマットが
あるとは驚きました。
Takaさんはstring関数の魔術師ですね。^^


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS HP-UX
DBMS Oracle 8.0
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.