Declare Sub gethostbyaddr Lib "ws2_32.dll" ( _
ByVal addr As String, _
ByVal len As Long, _
ByVal type As Long)
Чудик писал(а):Понимаю - хорошо. Но у меня в проекте используется класс CSokcet, который является почти исходником WinSock. Поэтому возникает конфликт.
Мне бы иначе... с использованием непосредственно контрола WinSock, чтоб его можно было заменить упомянутым классом.
WinSock.RemoteHost = "google.com"
MsgBox WinSock.RemoteIP
public Type HOSTENT
h_name As Long
h_aliases As Long
h_addrtype As Integer
h_length As Integer
h_addr_list As Long
End Type
Public Const hostent_size = 16
Public Const INADDR_NONE = &HFFFFFFFF
Public Const INADDR_ANY = &H0
Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long
Public Declare Function inet_ntoa Lib "wsock32.dll" (ByVal inn As Long) As Long
Public Declare Sub MemCopy Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
Public Declare Function gethostbyname Lib "wsock32.dll" (ByVal host_name As String) As Long
Public Declare Function inet_addr Lib "wsock32.dll" (ByVal cp As String) As Long
'returns IP as long, in network byte order
Public Function GetHostByNameAlias(ByVal HostName$) As Long
'Return IP address as a long, in network byte order
Dim phe&
Dim heDestHost As HOSTENT
Dim addrList&
Dim retIP&
retIP = inet_addr(HostName$)
If retIP = INADDR_NONE Then
phe = gethostbyname(HostName$)
If phe <> 0 Then
MemCopy heDestHost, ByVal phe, hostent_size
MemCopy addrList, ByVal heDestHost.h_addr_list, 4
MemCopy retIP, ByVal addrList, heDestHost.h_length
Else
retIP = INADDR_NONE
End If
End If
GetHostByNameAlias = retIP
End Function
Public Function GetAscIP(ByVal inn As Long) As String
#If Win32 Then
Dim nStr&
#Else
Dim nStr%
#End If
Dim lpStr&
Dim retString$
retString = String(32, 0)
lpStr = inet_ntoa(inn)
If lpStr Then
nStr = lstrlen(lpStr)
If nStr > 32 Then nStr = 32
MemCopy ByVal retString, ByVal lpStr, nStr
retString = Left(retString, nStr)
GetAscIP = retString
Else
GetAscIP = "255.255.255.255"
End If
End Function
'вызов такой
s=GetAscIP(GetHostByNameAlias("www.mail.ru"))
Konst_One писал(а):кстати, и через проксю работает нормально. только что проверил
Чудик писал(а):Хорошо, а разве gethostbyaddr не определяет наоборот по IP адресу имя компа?
Может gethostbyname?
KiloGraf писал(а):Интересно посмотреть на этот класс - CSocket, где его можно взять?
Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot], Yandex-бот и гости: 150