PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
23735 10/10/29 10:25:49 RE(4):IPアドレスの取得(PB9→PB11.5) By mn
23734 10/10/28 19:37:34 RE(3):IPアドレスの取得(PB9→PB11.5) By hakobako
23733 10/10/28 18:14:05 RE(2):IPアドレスの取得(PB9→PB11.5) By mn
23732 10/10/27 17:31:18 RE(1):IPアドレスの取得(PB9→PB11.5) By hakobako
23731 10/10/27 12:02:57 IPアドレスの取得(PB9→PB11.5) By mn

カテゴリ:スクリプトの記述
日付:2010年10月27日 12:02 発信者:mn
題名:IPアドレスの取得(PB9→PB11.5)

#21960 の議題をベースに、PB9で、IPアドレスの取得が出来ていました。
ところが、PB11.5になると、IPアドレスの取得が出来なくなりました。
ソースの変更は、ありません。

1)ローカル外部関数定義
////////////////////////////////////IPアドレス取得用
function long WSAStartup(uint wVersionRequested, ref SG_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 SG_HOSTENT buf, long p, long s ) library \"kernel32.dll\"
subroutine RtlMoveMemory( ref ulong buf, long p, long s ) library \"kernel32.dll\" 

2)構造体
sg_wsadata
sg_hostent

3)スクリプト
//////////// WinSock初期化
SG_WSADATA wsd
WSAStartup( 257, wsd ) //257:0x0101 -> WinSock v1.1
// ホスト名の解決
string nam
nam = Space(100)
gethostname( nam, 100 ) /////ホスト名
nam = upper(nam)
// HOSTENT構造体の取得
SG_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\' ) /////IPアドレス
// WinSock開放
WSACleanup()



付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows XP
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

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