ورود

View Full Version : اسم و ip کامپیوتر خودم در برنامه



bahram_m
سه شنبه 29 دی 1388, 11:03 صبح
برای راه اندازی انواع پرفراژدر برنامه احتیاج به نام وip کامپیوترهای داخل شبکه دارم لطفا راهنماییم کنید

kia1349
سه شنبه 29 دی 1388, 12:30 عصر
یه برنامه توی سایت www.universalthread.com هست بنام ADVFP.zip
میتونید از سورس اون کمک بگیرید

اینم یه مثال تقریبا مشابه:
http://www.tek-tips.com/faqs.cfm?fid=3356

اینم یه کد



DO decl


IF InitWinsock()
LOCAL lcLocalHost, lcLocalIP
lcLocalHost = GetLocalHostName()
lcLocalIP = GetHostIP(lcLocalHost)


? "Local Host:", lcLocalHost
? "Local IP:", lcLocalIP


= WSACleanup()
ENDIF
* End of Main


FUNCTION GetLocalHostName
* returns the standard host name for the local machine
#DEFINE SOCKET_ERROR -1
LOCAL lcBuffer, lnResult
lcBuffer = SPACE(250)
lnResult = gethostname (@lcBuffer, Len(lcBuffer))
RETURN Iif(lnResult=0, SUBSTR(lcBuffer, 1,AT(Chr(0),lcBuffer)-1), "")


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


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


IF lcHOSTENTptr <> 0
lcHOSTENT = GetMemBuf (lcHOSTENTptr, HOSTENT_SIZE)


* a pointer to a null-terminated list of addresses
lnAddrlistPtr = buf2dword(SUBSTR(lcHOSTENT, 13,4))
RETURN GetIPfromHOSTENT (lnAddrlistPtr)
ENDIF
RETURN ""


PROCEDURE GetIPfromHOSTENT (lnAddrlistPtr)
* retrieving IP address from the HOSTENT structure
LOCAL lnDataAddress, lcResult
lnDataAddress = buf2dword(GetMemBuf (lnAddrlistPtr, 4))
RETURN Iif(lnDataAddress <> 0, GetIPAddress(GetMemBuf(lnDataAddress, 4)), "")


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


FUNCTION InitWinsock()
* Initializing the Winsock service for the application
#DEFINE WSADATA_SIZE 398
#DEFINE WS_VERSION 514 && 0x0202
LOCAL lcWSADATAln, lnInitResult
lcWSADATA = Repli(Chr(0), WSADATA_SIZE)
lnInitResult = WSAStartup (WS_VERSION, @lcWSADATA)
RETURN (lnInitResult = 0)


FUNCTION GetMemBuf (lnAddr, lnBufsize)
LOCAL lcBuffer
lcBuffer = Repli(Chr(0), lnBufsize)
= Heap2Str (@lcBuffer, lnAddr, lnBufsize)
RETURN lcBuffer


FUNCTION 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


PROCEDURE decl
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

bahram_m
چهارشنبه 30 دی 1388, 11:58 صبح
ممنون دوست عزیز

ایا میشه با یک دستور نام کامپیوتر رو ریخت داخل متغیر

Esikhoob
چهارشنبه 30 دی 1388, 19:58 عصر
با سلام

SYS(0)

و یا


ID()