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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.