主题:[请教] VFP能否探测到互联网是联通还是断开状态?
			 北京惬意
				 [专家分:1330]  发布于 2010-03-01 08:26:00
 北京惬意
				 [专家分:1330]  发布于 2010-03-01 08:26:00							
			在互联网上传递文件,应该先探测互联网是否联通。VFP能否探测,如何探测?
敬请高人指点,在下由衷感谢!
						
					 
		
			
回复列表 (共4个回复)
		
								
				沙发
				
					 zxs4785 [专家分:410]  发布于 2010-03-01 11:51:00
zxs4785 [专家分:410]  发布于 2010-03-01 11:51:00				
				先生的帖子都是关于互联网应用方面的多,正好我对此也是最有兴趣的,我就多回答吧。
探测本机是否连接互联网意议并不是很大,探测要连接的互联网服务器是否正常就绪更重要,你说是吗?
							 
						
				板凳
				
					 北京惬意 [专家分:1330]  发布于 2010-03-01 19:41:00
北京惬意 [专家分:1330]  发布于 2010-03-01 19:41:00				
				觉得1楼所言极是。
							 
						
				3 楼
				
					 wuzhouhong [专家分:10890]  发布于 2010-03-03 12:35:00
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
北京惬意 [专家分:1330]  发布于 2010-03-04 20:08:00				
				十分感谢楼上wuzhouhong老师的指导,本帖我不仅在本论坛收藏,而且还复制保存起来了。
近几日我在广州这里参加一个较大的汽车配件交易会,在交易会上销售我用VFP编写的进销存软件,会后还要落实会上接的定单。忙完这事我再逐字逐句的研究这些代码,有搞不懂的地方还要请教,界时望wuzhouhong老师能继续不吝赐教。致以衷心感谢。
							 
									
			
我来回复