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月14日 09:15 発信者:Taka
題名:RE(1):WinSockでローカルIPアドレスを取得する方法

の?やんさん、おはようございます。

>WINSOCKでとれるそうですが、関数がよくわからないので、
>記述方法(スクリプト)を教えてくれるとすごく嬉しいのですが。。。

WinSockでローカルのIPアドレスを取得するのはなかなかめんどうなのですが、
それでも良ければ以下の要領でどうぞ。
(IPアドレスを自動割当する設定でも対応可能です)

【構造体】
WSADATA{
 ulong wVersion;
 ulong wHighVersion;
 char szDescription[257];
 char szSystemStatus[129];
 uint iMaxSockets;
 uint iMaxUdpDg;
 string lpVendorInfo;
}

HOSTENT{
 ulong h_name;
 ulong h_aliases;
 int h_addrtype;
 int h_length;
 ulong h_addr_list;
}

【外部関数】
function long WSAStartup(uint wVersionRequested, ref WSADATA lpWSAData) library \"wsock32.dll\"
function long WSACleanup() library \"wsock32.dll\"

function long gethostname(ref string strName, long namelen) library \"wsock32.dll\"
function long gethostbyname(string strName) library \"wsock32.dll\"

function long inet_ntoa(ulong addr) library \"wsock32.dll\"

subroutine RtlMoveMemory( ref HOSTENT buf, long p, long s ) library \"kernel32.dll\"
subroutine RtlMoveMemory( ref long buf, long p, long s ) library \"kernel32.dll\"

【スクリプト】
// WinSock初期化
WSADATA  wsd
WSAStartup( 257, wsd ) //257:0x0101 -> WinSock v1.1

// ホスト名の解決
string nam
nam = Space(100)
gethostname( nam, 100 )

// HOSTENT構造体の取得
HOSTENT host
ulong p_host
p_host = gethostbyname( nam )
RtlMoveMemory( host, p_host, 16 )

// IPアドレスの取得(ダブルポインタに注意)
ulong p_addr, addr
RtlMoveMemory( p_addr, host.h_addr_list, 4 )
RtlMoveMemory( addr, p_addr, 4 )

// 文字列に変換
string s_addr
s_addr = String( inet_ntoa(addr), \'address\' )
MessageBox( \"IP Address\", s_addr )

// WinSock開放
WSACleanup()


※おかしな箇所があったらご指摘ねがいます。(^^;

付加情報:

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.