ll_libload wsock, "wsock32.dll"
ll_getproc gethostname, "gethostname", wsock
ll_getproc gethostbyname, "gethostbyname", wsock
ll_getproc inet_ntoa, "inet_ntoa", wsock
ll_getproc WSACleanup, "WSACleanup", wsock
ll_getproc WSAStartup, "WSAStartup", wsock
#module
#deffunc sockinit int, int
mref major, 0 : mref minor, 1
sdim wsa, 398
if major = 0 & minor = 0 : major = 1 : minor = 1
prm = major + (minor << 8)
ll_getptr wsa : ll_ret prm.1
ll_callfunc prm, 2, WSAStartup@
return
#deffunc sockexit onexit
ll_callfnv WSACleanup@
return
#deffunc gethost val
if wsa = 0 : sockinit
mref host, 24
ll_getptr host : ll_ret prm
prm.1 = 256
ll_callfunc prm, 2, gethostname@
return
#deffunc getip val
mref rstr, 24
mref stt, 64
if host = 0 : gethost host
ll_getptr host : ll_ret prm
ll_callfunc prm, 1, gethostbyname@ : ll_ret prm
ll_peek prm, prm, 16
wpeek i.0, prm, 12
wpeek i.1, prm, 14
prm = i.1 << 16 + i.0
ll_peek4 prm, prm
ll_peek4 prm, prm
ll_callfunc prm, 1, inet_ntoa@ : ll_ret prm
ll_peek rstr, prm, 256
return
#global
sdim info, 128, 2
gethost info.0
mes "ホスト名=" + info.0
getip info.1
mes "IP=" + info.1
stop
|