Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

КАК УЗНАТЬ СВОЙ IP В WIN98.

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
TV
Гость





СообщениеДобавлено: Чт Апр 25 2002 12:25    Заголовок сообщения: КАК УЗНАТЬ СВОЙ IP В WIN98. Ответить с цитатой

Если не трудно, то примерчиком.
Вернуться к началу
Stan



Зарегистрирован: 14.04.2003
Сообщения: 61
Откуда: SPb

СообщениеДобавлено: Чт Апр 25 2002 14:58    Заголовок сообщения: Re: КАК УЗНАТЬ СВОЙ IP В WIN98. Ответить с цитатой

Используй API-функции: gethostbyname, gethostname

Например, на VB это будет выглядеть так:

' Форма
Private Sub Form_Load()
MsgBox "IP-address: " + GetIPAddr
End Sub

' Модуль
Public Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type

Declare Function gethostname Lib "WSOCK32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Declare Function gethostbyname Lib "WSOCK32" (ByVal szHost As String) As Long
Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Function GetIPAddr() As String
Dim sHostName As String * 256
Dim lpHost As Long
Dim HOST As HOSTENT

Dim dwIPAddr As Long
Dim tmpIPAddr() As Byte
Dim I As Integer
Dim sIPAddr As String

If gethostname(sHostName, 256) = -1 Then
MsgBox "Unable to successfully get Host Name."
GetIPAddr = ""
Exit Function
End If

sHostName = Trim$(sHostName)
lpHost = gethostbyname(sHostName)
If lpHost = Then
MsgBox "Unable to successfully get Host Name."
GetIPAddr = ""
Exit Function
End If

CopyMemoryIP HOST, lpHost, Len(HOST)
CopyMemoryIP dwIPAddr, HOST.hAddrList, 4
ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemoryIP tmpIPAddr(1), dwIPAddr, HOST.hLen
For I = 1 To HOST.hLen
sIPAddr = sIPAddr & tmpIPAddr(I) & "."
Next
GetIPAddr = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
End Function
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Stan



Зарегистрирован: 14.04.2003
Сообщения: 61
Откуда: SPb

СообщениеДобавлено: Чт Апр 25 2002 15:16    Заголовок сообщения: Re: КАК УЗНАТЬ СВОЙ IP В WIN98. Ответить с цитатой

На самом деле модуль должен выглядеть так! Smile

' Модуль
Public Const WS_VERSION_REQD As Long = &H101
Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128

Public Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type

Public Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type

Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
Declare Function gethostname Lib "WSOCK32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Declare Function gethostbyname Lib "WSOCK32" (ByVal szHost As String) As Long
Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Function GetIPAddr() As String
Dim sHostName As String * 256
Dim lpHost As Long
Dim HOST As HOSTENT
Dim WSAD As WSAData

Dim dwIPAddr As Long
Dim tmpIPAddr() As Byte
Dim I As Integer
Dim sIPAddr As String
Dim a As Boolean

Call WSAStartup(WS_VERSION_REQD, WSAD)

If gethostname(sHostName, 256) = -1 Then
MsgBox "Unable to successfully get Host Name."
GetIPAddr = ""
Exit Function
End If

sHostName = Trim$(sHostName)
lpHost = gethostbyname(sHostName)
If lpHost = Then
MsgBox "Unable to successfully get Host Name."
GetIPAddr = ""
Exit Function
End If

CopyMemoryIP HOST, lpHost, Len(HOST)
CopyMemoryIP dwIPAddr, HOST.hAddrList, 4
ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemoryIP tmpIPAddr(1), dwIPAddr, HOST.hLen
For I = 1 To HOST.hLen
sIPAddr = sIPAddr & tmpIPAddr(I) & "."
Next
GetIPAddr = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
End Function
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...