主题:[请教] VFP能否探测到互联网是联通还是断开状态?
北京惬意
[专家分:1330] 发布于 2010-03-01 08:26:00
在互联网上传递文件,应该先探测互联网是否联通。VFP能否探测,如何探测?
敬请高人指点,在下由衷感谢!
回复列表 (共4个回复)
沙发
zxs4785 [专家分:410] 发布于 2010-03-01 11:51:00
先生的帖子都是关于互联网应用方面的多,正好我对此也是最有兴趣的,我就多回答吧。
探测本机是否连接互联网意议并不是很大,探测要连接的互联网服务器是否正常就绪更重要,你说是吗?
板凳
北京惬意 [专家分:1330] 发布于 2010-03-01 19:41:00
觉得1楼所言极是。
3 楼
wuzhouhong [专家分:10890] 发布于 2010-03-03 12:35:00
?DOMIAN2IP("www.online.sh.cn")
**** 域名转换为IP地址
**** 来自http://www.gz9f.com/
**** 域名Ping不通,就返回NULL值
**** DOMIAN2IP.PRG
#DEFINE NULL_IP .NULL.
#DEFINE HOSTENT_SIZE 16
PARAMETERS cDOMAIN
LOCAL cResult
IF VARTYPE(m.cDOMAIN)="C"
DECLARE INTEGER WSACleanup IN ws2_32
DECLARE STRING inet_ntoa IN ws2_32 INTEGER in_addr
DECLARE INTEGER gethostbyname IN ws2_32 STRING host
DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING lpWSAData
DECLARE RtlMoveMemory IN kernel32 As CopyMemory STRING @Dest, INTEGER Src, INTEGER nLength
IF WSAStartup(0x202, Repli(Chr(0),512)) = 0 && initiates use of WS2_32.DLL
m.cResult = GetIP(m.cDOMAIN)
=WSACleanup()
ELSE
m.cResult = NULL_IP
ENDIF
ELSE
m.cResult = NULL_IP
ENDIF
RETURN m.cResult
*** returns IP like 127.0.0.1 for a given host name like www.somewhere.com
FUNCTION GetIP(cServer)
LOCAL nStruct, nSize, cBuffer, nAddr, cIP
m.nStruct = gethostbyname(m.cServer)
IF m.nStruct = 0 && not found in a host database; or not connected etc.
RETURN NULL_IP
ENDIF
m.cBuffer = Repli(Chr(0), HOSTENT_SIZE)
m.cIP = Repli(Chr(0), 4)
= CopyMemory(@cBuffer, m.nStruct, HOSTENT_SIZE)
= CopyMemory(@cIP, buf2dword(SUBS(m.cBuffer,13,4)),4)
= CopyMemory(@cIP, buf2dword(m.cIP),4)
RETURN inet_ntoa(buf2dword(m.cIP))
FUNCTION buf2dword(lcBuffer)
RETURN Asc(SUBSTR(m.lcBuffer, 1,1)) + ;
Bitlshift(Asc(SUBS(m.lcBuffer, 2,1)),8) +;
Bitlshift(Asc(SUBS(m.lcBuffer, 3,1)),16) +;
Bitlshift(Asc(SUBS(m.lcBuffer, 4,1)),24)
4 楼
北京惬意 [专家分:1330] 发布于 2010-03-04 20:08:00
十分感谢楼上wuzhouhong老师的指导,本帖我不仅在本论坛收藏,而且还复制保存起来了。
近几日我在广州这里参加一个较大的汽车配件交易会,在交易会上销售我用VFP编写的进销存软件,会后还要落实会上接的定单。忙完这事我再逐字逐句的研究这些代码,有搞不懂的地方还要请教,界时望wuzhouhong老师能继续不吝赐教。致以衷心感谢。
我来回复