vb中从域名得到ip及从ip得到域名Getting IP from domain name and getting domain name from IP in VB.docx
《vb中从域名得到ip及从ip得到域名Getting IP from domain name and getting domain name from IP in VB.docx》由会员分享,可在线阅读,更多相关《vb中从域名得到ip及从ip得到域名Getting IP from domain name and getting domain name from IP in VB.docx(6页珍藏版)》请在冰豆网上搜索。
vb中从域名得到ip及从ip得到域名GettingIPfromdomainnameandgettingdomainnamefromIPinVB
vb中从域名得到ip及从ip得到域名(GettingIPfromdomainnameandgettingdomainnamefromIPinVB)
privateconstws_version_reqd=&h101
privateconstws_version_major=ws_version_reqd\&h100and&hff&
privateconstws_version_minor=ws_version_reqdand&hff&
privateconstmin_sockets_reqd=1
privateconstsocket_error=-1
privateconstwsadescription_len=256
privateconstwsasys_status_len=128
privatetypehostent
hnameaslong
haliasesaslong
haddrtypeasinteger
hlengthasinteger
haddrlistaslong
endtype
privatetypewsadata
wversionasinteger
whighversionasinteger
szdescription(0towsadescription_len)asbyte
szsystemstatus(0towsasys_status_len)asbyte
imaxsocketsasinteger
imaxudpdgasinteger
lpszvendorinfoaslong
endtype
privatedeclarefunctiongethostbyaddrlib"wsock32.dll(addrasany,byval_
byteslenasinteger,addrtypeasinteger)aslong
privatedeclarefunctionwsagetlasterrorlib"wsock32.dll"()aslong
privatedeclarefunctionwsastartuplib"wsock32.dll"(byval_
wversionrequired&,lpwsadataaswsadata)aslong
privatedeclarefunctionwsacleanuplib"wsock32.dll"()aslong
privatedeclarefunctiongethostbynamelib"wsock32.dll"(byval_
hostname$)aslong
privatedeclaresubrtlmovememorylib"kernel32"(hpvdestasany,_
byvalhpvsource&,byvalcbcopy&)
functionhibyte(byvalwparamasinteger)注释:
获得整数的高位
hibyte=wparam\&h100and&hff&
endfunction
functionlobyte(byvalwparamasinteger)注释:
获得整数的低位
lobyte=wparamand&hff&
endfunction
functionsocketsinitialize()
dimwsadaswsadata
ireturnasintegerdim
dimslowbyteasstring,shighbyteasstring,smsgasstring
ireturn=wsastartup(ws_version_reqd,wsad)
ifireturn<>0then
msgbox"winsock.dll没有反应."
end
endif
iflobyte(wsad.wversion)shighbyte=trim$(str$(hibyte(wsad.wversion)))
slowbyte=trim$(str$(lobyte(wsad.wversion)))
smsg="windowssockets版本"&slowbyte&":
"&shighbyte
smsg=smsg&"不被winsock.dll支持"
msgboxsmsg
end
endif
ifwsad.imaxsocketssmsg="这个系统需要的最少sockets数为"
smsg=smsg&trim$(str$(min_sockets_reqd))
msgboxsmsg
end
endif
endfunction
subsocketscleanup()
昏暗的lreturn长
lreturn=wsacleanup()
如果lreturn<>0
本插座错误”和装饰(STR美元美元(lreturn))&”发生在清理”
终点
最后如果
端子
子form_load()
注释:
初始化插座
socketsinitialize
端子
私有子form_unload(取消为整数)
注释:
清除插座
socketscleanup
端子
私有函数getip(名称为字符串)字符串
昏暗的hostent_addr长
昏暗的主机hostent
昏暗的hostip_addr长
昏暗的temp_ip_address()字节
模糊i为整数
昏暗的ip_address作为字符串
hostent_addr=gethostbyname(名称)
如果hostent_addr=0
getip=“注释:
主机名不能被解释
退出功能
最后如果
rtlmovememory主机,hostent_addr,LenB(主持人)
rtlmovememoryhostip_addr,host.haddrlist,4
ReDimtemp_ip_address(1主机。
hlength)
rtlmovememorytemp_ip_address
(1),hostip_addr,host.hlength
我host.hlength=1
ip_address=ip_address和temp_ip_address(我)和“。
”
下一个
ip_address=美元中期(ip_address,1,Len(ip_address)-1)
getip=ip_address
端功能
私有子command1_click()
将字符串作为字符串
STR=getip(text1文本)
如果“=”
正文文本=“主机名不能被解释”。
其他的
正文文本=str。
最后如果
端子
私有函数getName(addrstr字符串)字符串
昏暗的hostent_addr长
昏暗的主机hostent
昏暗的地址(0至50)字节
昏暗的地址字符串
昏暗的hname(1至50)字节
将字符串作为字符串
模糊i为整数,j为整数
昏暗的temp_int为整数
昏暗的BYT字节
STR=装饰$(addrstr)
我=0
J=0
做
temp_int=0
i=i+1
当中间$(STR,i,1)>“0”和中间$(STR,i,1)<=“9”和i=莱恩(STR)时执行
temp_int=temp_int*10+美元中期(STR,我,1)
i=i+1
环
如果temp_int<=255
地址(j)=temp_int
j=j+1
最后如果
循环直到中旬$(STR,I,1)<>”。
“我>len(str)或temp_int>255
如果temp_int>255
getName=“地址非法”
退出功能
最后如果
hostent_addr=gethostbyaddr(ADDR(0),J,2)
如果hostent_addr=0
getName=“此地址无法解析”
退出功能
最后如果
rtlmovememory主机,hostent_addr,LenB(主持人)
RtlMoveMemoryhname
(1),host.hname,50
J=51
对于我=1比50
如果hname(我)=0
J=我
最后如果
如果我
hname(我)=32
最后如果
下一个我
getName=装饰$(StrConv(hname,vbunicode))
端功能
私有子command2_click()
将名称设为字符串
名称=getName(中文本)
如果名称“”然后
名称=“此地址没有域名”
最后如果
Text文本=名称。
端子