winsock通讯问题-wsgethostbyaddr
有人用过wsgethostbyaddr吗?是在pslib21.dll
1. 2k的机器,或者本机XP客户端发送信息都是正确的
2. 不是本机XP发送消息这个函数返回的就是-1
哪位碰到过这种情况,谢谢
原码:
integer iTmp, a,ll_i
pbhostent pbheTmp,pbnull
string sTmp
string sNewArray[]
ulong ulNewArray[]
Any aTmp
sTmp = space(MAXHOSTNAMELENGTH)
pbheTmp.h_name = sTmp
for a = 1 to MAXHOSTALIASES
pbheTmp.h_aliases[a] = sTmp
next
pbheTmp.h_addrtype = 0
pbheTmp.h_length = 0
for a = 1 to MAXHOSTADDRESSES
pbheTmp.h_addr_list[a] = 0
next
//就是这句,XP返回的就是-1,2k返回的就是0
iTmp = wsgethostbyaddr(pbheTmp.h_name,pbheTmp.h_aliases[],pbheTmp.h_addrtype,pbheTmp.h_length,pbheTmp.h_addr_list[],ulAddr)
for ll_i = 1 to 1000
Yield()
next
if iTmp = 0 then
for a = 1 to MAXHOSTALIASES
if pbheTmp.h_aliases[a] = sTmp then
pbheTmp.h_aliases = sNewArray
exit
else
sNewArray[a] = pbheTmp.h_aliases[a]
end if
next
for a = 1 to MAXHOSTADDRESSES
if pbheTmp.h_addr_list[a] = 0 then
pbheTmp.h_addr_list = ulNewArray
exit
else
ulNewArray[a] = pbheTmp.h_addr_list[a]
end if
next
else
setnull(aTmp)
//pbheTmp = aTmp
pbheTmp = pbnull
end if
return(pbheTmp)