IP

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

IP

Сообщение Чудик » 14.02.2005 (Пн) 18:39

Как я могу узнать IP удаленного компа, если знаю его имя?
Век живи - век учись!
www.detal-plast.narod.ru

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 14.02.2005 (Пн) 18:55

Зацени:

Код: Выделить всё
Declare Sub gethostbyaddr Lib "ws2_32.dll" ( _
    ByVal addr As String, _
    ByVal len As Long, _
    ByVal type As Long)
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 14.02.2005 (Пн) 18:59

Понимаю - хорошо. Но у меня в проекте используется класс CSokcet, который является почти исходником WinSock. Поэтому возникает конфликт.
Мне бы иначе... с использованием непосредственно контрола WinSock, чтоб его можно было заменить упомянутым классом.
Век живи - век учись!
www.detal-plast.narod.ru

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 14.02.2005 (Пн) 19:25

Чудик писал(а):Понимаю - хорошо. Но у меня в проекте используется класс CSokcet, который является почти исходником WinSock. Поэтому возникает конфликт.
Мне бы иначе... с использованием непосредственно контрола WinSock, чтоб его можно было заменить упомянутым классом.


Мне это ничего не говорит :roll:
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 14.02.2005 (Пн) 19:31

Хорошо, а разве gethostbyaddr не определяет наоборот по IP адресу имя компа?
Может gethostbyname?
Век живи - век учись!
www.detal-plast.narod.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.02.2005 (Пн) 19:34

Что-нибудь в духе:
Код: Выделить всё
WinSock.RemoteHost = "google.com"
MsgBox WinSock.RemoteIP
Изображение

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 14.02.2005 (Пн) 19:52

MsgBox WinSock.RemoteIP - выдает постоянно пустые значения!
Век живи - век учись!
www.detal-plast.narod.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.02.2005 (Пн) 21:28

Ну тогда остаётся только gethostbyname :-)
Пример где-то вокруг http://bbs.vbstreets.ru/viewtopic.php?t=9109
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.02.2005 (Пн) 22:13

Код: Выделить всё
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"))



Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 15.02.2005 (Вт) 13:57

2 Konst_One

Всегда выдаётся результат 255.255

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.02.2005 (Вт) 14:34

ты это проверял, когда в инете был в момент запуска этой проги?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.02.2005 (Вт) 14:37

или ты работаешь через прокси :)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.02.2005 (Вт) 14:46

а все понял, вы похоже не сделали инициализацию винсокета 8)

вот примерчик накропал, держи:
Вложения
Get IP.rar
(6.29 Кб) Скачиваний: 27

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.02.2005 (Вт) 15:23

кстати, и через проксю работает нормально. только что проверил

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 15.02.2005 (Вт) 15:29

Konst_One писал(а):кстати, и через проксю работает нормально. только что проверил


прокси не имеет ни какого отношения к gethostbyname
Ключевое слово здесь
DNS.
//<-
Mit freundlichen Grüßen
//->

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 15.02.2005 (Вт) 16:23

У меня все работает, даже получилось в проект впихнуть.
Кстати, tyomitch толкал в том же направлении, с чего я и начал копать.
А вообще, причем может быть прокси сервер. На что он влияет? В сетевых технологиях я слаб - объясните?
Век живи - век учись!
www.detal-plast.narod.ru

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.02.2005 (Вт) 16:42

прокси тут на самом деле не причем, как было правильно замечено codemaster, только DSN за энто дело отвечает

я про прокси писал, чтобы удостовериться, что ты к инету подключен, а не только к локалке

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 15.02.2005 (Вт) 16:44

Не DSN а DNS :)
I don't understand. Sorry.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.02.2005 (Вт) 17:14

ладно уж, очепятаться один раз нельзя :)
Domain Name System
Database Source Name

KiloGraf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 142
Зарегистрирован: 21.10.2004 (Чт) 7:37
Откуда: берутся такие глупые вопросы?

Сообщение KiloGraf » 15.02.2005 (Вт) 17:16

Интересно посмотреть на этот класс - CSocket, где его можно взять?
Nonsense in BASIC. © 1982 ...

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 15.02.2005 (Вт) 18:56

Чудик писал(а):Хорошо, а разве gethostbyaddr не определяет наоборот по IP адресу имя компа?
Может gethostbyname?


Ой! :oops:
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 15.02.2005 (Вт) 20:26

KiloGraf писал(а):Интересно посмотреть на этот класс - CSocket, где его можно взять?

http://bbs.vbstreets.ru/viewtopic.php?t=12552&highlight=csocket
Век живи - век учись!
www.detal-plast.narod.ru

KiloGraf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 142
Зарегистрирован: 21.10.2004 (Чт) 7:37
Откуда: берутся такие глупые вопросы?

Сообщение KiloGraf » 16.02.2005 (Ср) 2:23

Кстати, на вопрос темы, у меня лежит пример, отвечающий требованиям.

Пингует, и выдает IP по доменному имени. И соответственно в LAN'е - по имени компа. И очень маленький.

http://kilograf.siteburg.com/page.php?id=10
Nonsense in BASIC. © 1982 ...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 173

    TopList