GetHost를 이용한 IP가져오기(10.5버전 이상용)GetHost를 이용한 IP가져오기(10.5버전 이상용)

Posted at 2010. 10. 11. 08:46 | Posted in PowerBuilder
반응형

이전 글에 GetHost는 이전 버전용이라 사용할 수 없는 줄 알았는데, 사용이 가능하며

10.5버전에서도 GetHost()를 통해 새로 생긴 Byte타입으로  연산하면 도메인명을 통한 IP추출이 가능합니다.

 

External Funtion 선언

function int WSAStartup (uint UIVerionrequested, ref str_wsadata lpWSAdata) library "wsock32.DLL" alias for "WSAStartup;ansi"
function int WSACleanup() library "wsock32.DLL"
function int WSAGetLastError() library "wsock32.DLL"
function int gethostname(ref string name, int namelen) library "wsock32.DLL"  alias for "gethostname;Ansi"
function string GetHost(string lpszhost,ref blob lpszaddress) library "pbws32.dll" alias for "GetHost;Ansi"

 

구조체 선언

str_wsadata


스크립트

String ls_ip, ls_host, ls_tmp
Blob{10} lb_host
Integer li_version, li_rc
str_wsadata lstr_wsadata
Byte lbt_host[10]

ls_host = Space(128)
li_version = 257
If WSAStartup(li_version, lstr_wsadata) = 0 Then
   If GetHostName(ls_host, Len(ls_host)) < 0 Then
      li_rc = WSAGetLastError()
   Else
 GetHost(ls_host, lb_host) 
 lbt_host[1] = byte(blobmid(lb_host, 1, 1))
 lbt_host[2] = byte(blobmid(lb_host, 2, 1))
 lbt_host[3] = byte(blobmid(lb_host, 3, 1))
 lbt_host[4] = byte(blobmid(lb_host, 4, 1))
 ls_ip = String(lbt_host[1]) + '.' + String(lbt_host[2]) + '.' + String(lbt_host[3]) + '.' + String(lbt_host[4])
      li_rc = 0
   End If
   MessageBox("My IP", ls_ip)
Else
   li_rc = WSAGetLastError()
End If

WSACleanup()

 
반응형

//