Страница: 1 |
Вопрос: IP адреса всех соединений на компьютере | Добавлено: 13.01.08 12:14 |
Автор вопроса: ![]() |
Речь идет о VB 6.0
Подскажите, как можно получить IP адреса каждого соединения на компьютере? Пример результата: 1. 127.0.0.1 (localhost) 2. 10.12.34.56 (локалка) 3. 78.179.12.34 (инет) Через WinSock удается получить только локальный адрес. Меня интересует в основном инетовский. Если нельзя это сделать напрямую, подскажите как можно получить это извращенным способом... меня интересует только результат. (например: комп соединяется со страничкой http://yoip.com.ua/ и стягивает с содержимого ip) но может быть есть более простые пути?.. |
Ответы | Всего ответов: 4 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 482 |
Профиль | Цитата | #1 | Добавлено: 13.01.08 13:04 |
но может быть есть более простые пути?.. нет.
Если ты выходишь в инет через router, то последний может использовать NAT(network address translation) т. е переводить твой локальный адрес в адрес инета и обратно. Единственный верный способ: соединяться с сайтом(сервером), на сайте(сервере) вычислять айпи и отправлять его клиенту |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 3 Ответов: 4 |
Профиль | Цитата | #2 | Добавлено: 13.01.08 14:19 |
Все нужные адреса выводятся при помощи встроенной программы ipconfig.
Можно ли получить в текстовую переменную результат? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 13.01.08 15:17 |
'
' Coded by Sharp (sharp_c[dog]yandex[dot]ru) ' 04.09.2005 ' Private Declare Function GetAdaptersInfo Lib "IPHLPAPI.dll" (ByRef pAdapterInfo As Any, ByRef pOutBufLen As Long) As Long Private Declare Sub CopyMemoryRR Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long) Private Declare Sub CopyMemoryRV Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByVal Source As Any, ByVal Length As Long) Private Const MAX_ADAPTER_ADDRESS_LENGTH As Long = 8 Private Const MAX_ADAPTER_DESCRIPTION_LENGTH As Long = (128 + 4) Private Const MAX_ADAPTER_NAME_LENGTH As Long = (256 + 4) Private Const MAX_IP_STRING_LENGTH As Long = 16 Private Const MIB_IF_TYPE_OTHER As Long = 1 Private Const MIB_IF_TYPE_ETHERNET As Long = 6 Private Const MIB_IF_TYPE_TOKENRING As Long = 9 Private Const MIB_IF_TYPE_FDDI As Long = 15 Private Const MIB_IF_TYPE_PPP As Long = 23 Private Const MIB_IF_TYPE_LOOPBACK As Long = 24 Private Const MIB_IF_TYPE_SLIP As Long = 28 'typedef struct _IP_MASK_STRING{ ' char String[4 * 4]; '}; Private Type IP_MASK_STRING s As String * MAX_IP_STRING_LENGTH End Type 'typedef struct _IP_ADDRESS_STRING{ ' char String[4 * 4]; '}; Private Type IP_ADDRESS_STRING s As String * MAX_IP_STRING_LENGTH End Type 'typedef struct _IP_ADDR_STRING{ ' struct _IP_ADDR_STRING* Next; ' IP_ADDRESS_STRING IpAddress; ' IP_MASK_STRING IpMask; ' ![]() '}; Private Type IP_ADDR_STRING lpNext As Long IpAddress As IP_ADDRESS_STRING IpMask As IP_MASK_STRING Context As Long End Type 'typedef struct _IP_ADAPTER_INFO{ ' struct _IP_ADAPTER_INFO* Next; ' ![]() ' char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]; ' char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]; ' UINT AddressLength; ' BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; ' ![]() ' UINT Type; ' UINT DhcpEnabled; ' PIP_ADDR_STRING CurrentIpAddress; ' IP_ADDR_STRING IpAddressList; ' IP_ADDR_STRING GatewayList; ' IP_ADDR_STRING DhcpServer; ' BOOL HaveWins; ' IP_ADDR_STRING PrimaryWinsServer; ' IP_ADDR_STRING SecondaryWinsServer; ' time_t LeaseObtained; ' time_t LeaseExpires; '}; Private Type IP_ADAPTER_INFO lpNext As Long ComboIndex As Long AdapterName As String * MAX_ADAPTER_NAME_LENGTH ![]() AddressLength As Long Address As String * MAX_ADAPTER_ADDRESS_LENGTH Index As Long Type As Long ![]() CurrentIpAddress As Long IpAddressList As IP_ADDR_STRING GatewayList As IP_ADDR_STRING ![]() HaveWins As Integer PrimaryWinsServer As IP_ADDR_STRING SecondaryWinsServer As IP_ADDR_STRING LeaseObtained As Long LeaseExpires As Long End Type Private Sub Command1_Click() Text1 = GetAdaptersInformation() End Sub Private Function GetAdaptersInformation() As String Dim buff() As Byte Dim pLen As Long Dim iai As IP_ADAPTER_INFO Dim res As String Dim lNext As Long pLen = 0 GetAdaptersInfo Null, pLen If pLen = 0 Then GetAdaptersInformation = "No adapters" & vbCrLf Else ReDim buff(pLen) GetAdaptersInfo buff(0), pLen CopyMemoryRR iai, buff(0), 640 res = res & GetAdapterInformation(iai) Do While iai.lpNext <> 0 lNext = iai.lpNext CopyMemoryRV iai, lNext, 640 res = res & GetAdapterInformation(iai) Loop GetAdaptersInformation = res End If End Function Private Function GetAdapterInformation(iai As IP_ADAPTER_INFO) As String Dim res As String res = res & "Adapter: " & sz2String(iai.AdapterName) & vbCrLf res = res & " ![]() res = res & "Phys.address: " & String2PhysAddr(iai.Address, iai.AddressLength) & vbCrLf res = res & "Index: " & CStr(iai.Index) & vbCrLf Select Case iai.Type Case MIB_IF_TYPE_OTHER: res = res & "Type: Other" & vbCrLf Case MIB_IF_TYPE_ETHERNET: res = res & "Type: Ethernet" & vbCrLf Case MIB_IF_TYPE_TOKENRING: res = res & "Type: TokenRing" & vbCrLf Case MIB_IF_TYPE_FDDI: res = res & "Type: FDDI" & vbCrLf Case MIB_IF_TYPE_PPP: res = res & "Type: PPP" & vbCrLf Case MIB_IF_TYPE_LOOPBACK: res = res & "Type: Loopback" & vbCrLf Case MIB_IF_TYPE_SLIP: res = res & "Type: SLIP" & vbCrLf End Select res = res & " ![]() If iai.DhcpEnabled Then res = res & sz2String(iai.DhcpServer.IpAddress.s) & vbCrLf res = res & " ![]() ![]() res = res & " ![]() ![]() Else res = res & "No" & vbCrLf End If res = res & " ![]() res = res & "IP address: " & GetIPList(iai.IpAddressList) & vbCrLf res = res & "WINS: " If iai.HaveWins Then res = res & "primary - " & sz2String(iai.PrimaryWinsServer.IpAddress.s) & "; " & _ "secondary - " & sz2String(iai.PrimaryWinsServer.IpAddress.s) & vbCrLf Else res = res & "No" & vbCrLf End If GetAdapterInformation = res & vbCrLf End Function Private Function String2PhysAddr(Addr As String, AddrLen As Long) Dim res As String Dim s As String For i = 1 To AddrLen s = Hex(Asc(Mid(Addr, i, 1))) res = res & IIf(Len(s) = 1, "0", "" ![]() Next String2PhysAddr = Left(res, Len(res) - 1) End Function Private Function GetIPList(ipl As IP_ADDR_STRING) As String Dim lNext As Long Dim res As String Dim ias As IP_ADDR_STRING CopyMemoryRR ias, ipl, 40 res = res & sz2String(ias.IpAddress.s) & "/" & sz2String(ias.IpMask.s) & "; " Do While ias.lpNext <> 0 lNext = ias.lpNext CopyMemoryRV ias, lNext, 40 res = res & sz2String(ias.IpAddress.s) & "/" & sz2String(ias.IpMask.s) & "; " Loop GetIPList = Left(res, Len(res) - 2) End Function Private Function sz2String(s As String) As String sz2String = Left(s, InStr(s, vbNullChar) - 1) End Function |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 3 Ответов: 4 |
Профиль | Цитата | #4 | Добавлено: 13.01.08 15:50 |
Спасибо большое, Sharp, то что надо! |
Страница: 1 |
|