Function HostByAddress(ByVal sAddress As String) As String
Dim lAddress As Long
Dim p As Long
Dim HostName As String
Dim Host As T_Host
lAddress = inet_addr(sAddress)
p = gethostbyaddr(lAddress, 4, PF_INET)
If p <> 0 Then
CopyMemory Host, ByVal p, Len(Host)
HostName = String(256, 0)
CopyMemory ByVal HostName, ByVal Host.h_name, 256
If HostName = "" Then HostByAddress = "Unable to Resolve Address"
HostByAddress = Left(HostName, InStr(HostName, Chr(0)) - 1)
Else
HostByAddress = "No DNS Entry"
End If
End Function
Public Const AF_INET = 2
Public Const WSANO_DATA = 11004
Public Const WSADESCRIPTION_LEN = 256
Public Const WSASYS_STATUS_LEN = 128
Public Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(WSADESCRIPTION_LEN) As Byte
szSystemStatus(WSASYS_STATUS_LEN) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
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 Declare Function WSAStartup Lib "ws2_32" (ByVal wVersionRequested As Integer, lpWSAData As WSADATA) As Long
Public Declare Function WSACleanup Lib "ws2_32" () As Long
Public Declare Function WSAGetLastError Lib "ws2_32" () As Long
Public Declare Function inet_addr Lib "ws2_32" (ByVal itype As String) As Long
Public Declare Function gethostbyaddr Lib "ws2_32" (addr As Long, ByVal ilen As Long, ByVal itype As Long) As Long
Public Declare Sub GetMem4 Lib "msvbvm60" (dest As Any, ddval As Any)
Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpString As Any) As Long
Public Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)
Public Sub Main()
Dim wsad As WSADATA
Dim ip As Long
Dim addr_h As Long
Dim tmp As String
WSAStartup &H202, wsad
ip = inet_addr("127.0.0.1")
addr_h = gethostbyaddr(ip, 4, AF_INET)
If Not (addr_h = 0) Then
GetMem4 ByVal addr_h, addr_h 'addr_h = HOSTENT.h_name
tmp = String$(lstrlen(ByVal addr_h), 0)
RtlMoveMemory ByVal tmp, ByVal addr_h, Len(tmp)
MsgBox tmp, vbInformation
Else
If WSAGetLastError = WSANO_DATA Then
MsgBox "Valid name, no data record of requested type.", vbExclamation
Else
MsgBox "Error #" & WSAGetLastError, vbExclamation
End If
End If
WSACleanup
End Sub
А как может быть иначе? Разве что так:..может быть так, что данные пройдут ч/з провайдера
RemoteHost будет содержать IP шлюза.RemoteHost будет содержать IP прова?
Потому что на них будет мой клиент
У него белый ИП О_о? Или из локали коннектица только?а на моём компе сервер
Вот только я не получил от него ответа, маска 0.255.255.255 является непрерывной или чередующейся?Формально маска может быть любой.
Если в локальной сети могут быть любые IP адреса, то как маршрутизатор определяет, куда я посылаю пакет, на IP локальной сети или на IP внешней сети?Формально маска может быть любой.
Source писал(а):AlibekписалФормально маска может быть любой.
Source писал(а):Если в локальной сети могут быть любые IP адреса, то как маршрутизатор определяет, куда я посылаю пакет, на IP локальной сети или на IP внешней сети?
Source писал(а):и ещё, прочитал в википедии незавершённую статью про Multicast.
Ты имел ввиду локальную сеть без выхода в инет?Локальные сети в принципе могут иметь почти любую адресацию
Source писал(а):если я буду слать пакет на 194.70.0.1, то как роутер определит, шлю я пакет на внешний IP или на IP в локальной сети?
Source писал(а):2. Если я шлю пакет на 255.255.255.255, у меня подсеть IP/24, но вся локальная сеть прова IP/16, пакет разойдётся на IP/24 или IP/16?
Сейчас этот форум просматривают: AhrefsBot и гости: 12