回 帖 发 新 帖 刷新版面

主题:[请教] VFP能否探测到互联网是联通还是断开状态?

在互联网上传递文件,应该先探测互联网是否联通。VFP能否探测,如何探测?
敬请高人指点,在下由衷感谢!

回复列表 (共4个回复)

沙发

先生的帖子都是关于互联网应用方面的多,正好我对此也是最有兴趣的,我就多回答吧。

探测本机是否连接互联网意议并不是很大,探测要连接的互联网服务器是否正常就绪更重要,你说是吗?

板凳

觉得1楼所言极是。

3 楼

?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 楼

十分感谢楼上wuzhouhong老师的指导,本帖我不仅在本论坛收藏,而且还复制保存起来了。
近几日我在广州这里参加一个较大的汽车配件交易会,在交易会上销售我用VFP编写的进销存软件,会后还要落实会上接的定单。忙完这事我再逐字逐句的研究这些代码,有搞不懂的地方还要请教,界时望wuzhouhong老师能继续不吝赐教。致以衷心感谢。

我来回复

您尚未登录,请登录后再回复。点此登录或注册