Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Определение IP адресов(!) Добавлено: 06.11.05 00:14  

Автор вопроса:  Kodo | ICQ: 293048085 
Здравствуйте =)
Подскажите, как можно определить ВСЕ ip компа? Не силен во всех прелестях TCP\IP, но знаю одно - одна машина может иметь много ip адресов :) Например, у меня 2 сети и подключен dial-up - как мне узнать все 3 ip адреса? Все, что нашел - из серии Winsock.LocalIP - определяет всего 1 IP, причем неясно по какому принципу :S Подскажите плиз, а то совсем запутался :)

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 06.11.05 02:32
'typedef struct _MIB_IPADDRROW{
'    ;DWORD dwAddr;
'    ;DWORD dwIndex;
'    ;DWORD dwMask;
'    ;DWORD dwBCastAddr;
'    ;DWORD dwReasmSize;
'    unsigned short unused1;
'    unsigned short unused2;
'};
Private Type MIB_IPADDRROW
    dwAddr As Long
    dwIndex As Long
    dwMask As Long
    dwBCastAddr As Long
    dwReasmSize As Long
    unused As Long
End Type

'typedef struct _MIB_IPADDRTABLE{
'    ;DWORD dwNumEntries;
'    MIB_IPADDRROW table[ANY_SIZE];
'};
Private Type MIB_IPADDRTABLE
    dwNumEntries As Long
    table As MIB_IPADDRROW
End Type


Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function GetIpAddrTable Lib "IPHLPAPI.dll" (ByRef pIpAddrTable As Any, ByRef pdwSize As Long, ByVal border As Long) As Long



Private Sub Command1_Click()
    Text1 = GetIPList()
End Sub


Private Function GetIPList() As String
    Dim miat As MIB_IPADDRROW
    Dim lSize As Long, dwNumEntries As Long
    Dim buff() As Byte
    
    GetIpAddrTable miat, lSize, 0
    ReDim buff(lSize)
    GetIpAddrTable buff(0), lSize, 0
    
    CopyMemory dwNumEntries, buff(0), 4
    
    For i = 0 To dwNumEntries - 1
        CopyMemory miat, buff(4 + i * 6 * 4), LenB(miat)
        GetIPList = GetIPList & Long2IP(miat.dwAddr) & "/" & Long2IP(miat.dwMask) & vbCrLf
    Next
End Function


Private Function Long2IP(ip As Long)
    Dim a As String
    a = String(8 - Len(Hex(ip)), "0";) & Hex(ip)
    Long2IP = CStr(CLng("&H" & Right(a, 2))) & "." & _
        CStr(CLng("&H" & Mid(a, 5, 2))) & "." & _
        CStr(CLng("&H" & Mid(a, 3, 2))) & "." & _
        CStr(CLng("&H" & Left(a, 2)))
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Kodo



Разработчик Offline Client

ICQ: 293048085 

Вопросов: 37
Ответов: 457
 Профиль | | #2 Добавлено: 06.11.05 11:42
Sharp
Респект! ;)

Ответить

Номер ответа: 3
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #3 Добавлено: 06.11.05 14:11
Красота! В мемориз. :-)

Ответить

Номер ответа: 4
Автор ответа:
 00712



ICQ: 207190437 

Вопросов: 0
Ответов: 2
 Профиль | | #4 Добавлено: 25.11.06 04:18
в смысле ты хочеш не с одного компа узнать айпишники остальных?

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 25.11.06 16:04
Остальных где? Вообще в мире? В локальной сети? В штабе сухопутных войск США в России?

Ответить

Номер ответа: 6
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #6 Добавлено: 25.11.06 21:32
00712 не въехал в тему... :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам