powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / IP-адрес
4 сообщений из 4, страница 1 из 1
IP-адрес
    #33907626
Фотография givi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскадите, как можно в фоксе заполучить IP-адрес машины в сети. Спасибо.
...
Рейтинг: 0 / 0
IP-адрес
    #33908959
puls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для givi ответ от Sergey ch

IP 1:

ows = createobject("mswinsock.winsock")
? ows.LocalIP
release ows




IP 2:

SET PROCEDURE TO GetIP.prg
oo = CREATEOBJECT("GetIP")
a = oo.GetLocalHostName()
b = oo.GetHostIP( a )
? "Local Host:", a
? "Local IP:", b

DEFINE CLASS GetIP AS CUSTOM

NAME = "GetIP"

PROCEDURE Init
DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING @lpWSAData
DECLARE INTEGER WSACleanup IN ws2_32
DECLARE INTEGER gethostbyname IN ws2_32 STRING hostname

DECLARE INTEGER gethostname IN ws2_32;
STRING @name, INTEGER namelen

DECLARE RtlMoveMemory IN kernel32 As Heap2Str;
STRING @Dest, INTEGER Src, INTEGER nLength
ENDPROC

Procedure GetLocalHostName
*|-- returns the standard host name for the local machine
#Define SOCKET_ERROR -1
Local lcBuffer, lnResult, lpWSAData
********************************
lpWSAData = Space(512)
WSAStartup(0x0101,@lpWSAData)
********************************
lcBuffer = Space(250)
lnResult = gethostname (@lcBuffer, Len(lcBuffer))
Return Iif(lnResult=0, Substr(lcBuffer, 1,At(Chr(0),lcBuffer)-1), "")
Endproc

FUNCTION GetHostIP (lcHostname)
#DEFINE HOSTENT_SIZE 16
LOCAL lcHOSTENTptr, lcHOSTENT, lnAddrlistPtr

*|-- address for the HOSTENT structure
lcHOSTENTptr = gethostbyname(lcHostname)

IF lcHOSTENTptr <> 0
lcHOSTENT = This.GetMemBuf( lcHOSTENTptr, HOSTENT_SIZE )
*|-- a pointer to a null-terminated list of addresses
lnAddrlistPtr = This.buf2dword(SUBSTR(lcHOSTENT, 13,4))
RETURN This.GetIPfromHOSTENT(lnAddrlistPtr)
ENDIF
RETURN ""
ENDPROC


PROCEDURE GetIPfromHOSTENT (lnAddrlistPtr)
*|-- retrieving IP address from the HOSTENT structure
LOCAL lnDataAddress, lcResult
lnDataAddress = This.buf2dword( This.GetMemBuf( lnAddrlistPtr, 4 ) )
RETURN IIF( lnDataAddress <> 0, This.GetIPAddress( This.GetMemBuf( lnDataAddress, 4 ) ), "" )
ENDPROC

FUNCTION GetIPAddress (lcAddrBuf)
*|-- converts 4-characters string buffer
*|-- to the IP address string representation
LOCAL lcResult, ii
lcResult = ""
FOR ii=1 TO 4
lcResult = lcResult +;
LTRIM(STR(Asc(SUBSTR(lcAddrBuf, ii,1)))) +;
Iif(ii=4, "",".")
ENDFOR
RETURN lcResult
ENDPROC

PROCEDURE buf2dword (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
Asc(SUBSTR(lcBuffer, 2,1)) * 256 +;
Asc(SUBSTR(lcBuffer, 3,1)) * 65536 +;
Asc(SUBSTR(lcBuffer, 4,1)) * 16777216
ENDPROC

PROCEDURE GetMemBuf (lnAddr, lnBufsize)
LOCAL lcBuffer
lcBuffer = REPLICATE(Chr(0), lnBufsize)
Heap2Str( @lcBuffer, lnAddr, lnBufsize )
RETURN lcBuffer
ENDPROC


ENDDEFINE
...
Рейтинг: 0 / 0
IP-адрес
    #33909144
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puls:В Баку может быть и так пишут :) А в России вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
#Define WSABASEERR               10000 
#Define WSAEINTR                (WSABASEERR+ 4 )
#Define WSAEFAULT               (WSABASEERR+ 14 )
#Define WSAEINPROGRESS          (WSABASEERR+ 36 )
#Define WSAENETDOWN             (WSABASEERR+ 50 )
#Define WSANOTINITIALISED       (WSABASEERR+ 93 )
#Define WSAHOST_NOT_FOUND       (WSABASEERR+ 1001 )
#Define WSATRY_AGAIN            (WSABASEERR+ 1002 )
#Define WSANO_RECOVERY          (WSABASEERR+ 1003 )
#Define WSANO_DATA              (WSABASEERR+ 1004 )
#Define INADDR_NONE             0xffffffff 

Set Library To vTools.fll  ADDITIVE 
? GetAddress("www.mail.ru")

Set Library To

Procedure GetAddress(tcAddaress As String)
   Local lcErr as String
   Store Chr( 0 ) To lcErr, lcDNSName
   GetHost_Address(@lcDNSName,@lcErr)
   Return lcErr
Endproc
Надеюсь ошибки сами разъюзаете, да , теска , alex11100 ?
...
Рейтинг: 0 / 0
IP-адрес
    #33909203
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Уважаемые участники дискуссии, будьте, пожалуйста взаимно вежливы и корректны по отношению к друг-другу. Ряд сообщений было удалено... Sorry.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / IP-адрес
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]