窗体代码:

'测试
Private Sub Form_Load()
    If PingIP("122.22.255.255") Then
        MsgBox "可以ping通"
    Else
        MsgBox "ping 不通"
    End If
End Sub

模块代码:

Option Explicit

Private Const IP_SUCCESS As Long = 0
Private Const IP_STATUS_BASE As Long = 11000
Private Const IP_BUF_TOO_SMALL As Long = (11000 + 1)
Private Const IP_DEST_NET_UNREACHABLE As Long = (11000 + 2)
Private Const IP_DEST_HOST_UNREACHABLE As Long = (11000 + 3)
Private Const IP_DEST_PROT_UNREACHABLE As Long = (11000 + 4)
Private Const IP_DEST_PORT_UNREACHABLE As Long = (11000 + 5)
Private Const IP_NO_RESOURCES As Long = (11000 + 6)
Private Const IP_BAD_OPTION As Long = (11000 + 7)
Private Const IP_HW_ERROR As Long = (11000 + 8)
Private Const IP_PACKET_TOO_BIG As Long = (11000 + 9)
Private Const IP_REQ_TIMED_OUT As Long = (11000 + 10)
Private Const IP_BAD_REQ As Long = (11000 + 11)
Private Const IP_BAD_ROUTE As Long = (11000 + 12)
Private Const IP_TTL_EXPIRED_TRANSIT As Long = (11000 + 13)
Private Const IP_TTL_EXPIRED_REASSEM As Long = (11000 + 14)
Private Const IP_PARAM_PROBLEM As Long = (11000 + 15)
Private Const IP_SOURCE_QUENCH As Long = (11000 + 16)
Private Const IP_OPTION_TOO_BIG As Long = (11000 + 17)
Private Const IP_BAD_DESTINATION As Long = (11000 + 18)
Private Const IP_ADDR_DELETED As Long = (11000 + 19)
Private Const IP_SPEC_MTU_CHANGE As Long = (11000 + 20)
Private Const IP_MTU_CHANGE As Long = (11000 + 21)
Private Const IP_UNLOAD As Long = (11000 + 22)
Private Const IP_ADDR_ADDED As Long = (11000 + 23)
Private Const IP_GENERAL_FAILURE As Long = (11000 + 50)
Private Const MAX_IP_STATUS As Long = (11000 + 50)
Private Const IP_PENDING As Long = (11000 + 255)
Private Const PING_TIMEOUT As Long = 500
Private Const WS_VERSION_REQD As Long = &H101
Private Const MIN_SOCKETS_REQD As Long = 1
Private Const SOCKET_ERROR As Long = -1
Private Const INADDR_NONE As Long = &HFFFFFFFF
Private Const MAX_WSADescription As Long = 256
Private Const MAX_WSASYSStatus As Long = 128

Public PingTime As Long
Private Type ICMP_OPTIONS
    Ttl             As Byte
    Tos             As Byte
    Flags           As Byte
    OptionsSize     As Byte
    OptionsData     As Long
End Type

Private Type ICMP_ECHO_REPLY
    Address         As Long
    status          As Long
    RoundTripTime   As Long
    DataSize        As Long
    DataPointer     As Long
    Options         As ICMP_OPTIONS
    Data            As String * 250
End Type

Private Type WSADATA
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To MAX_WSADescription) As Byte
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
    wMaxSockets As Long
    wMaxUDPDG As Long
    dwVendorInfo As Long
End Type

Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Declare Function WSAStartup Lib "wsock32" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSACleanup Lib "wsock32" () As Long
Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
Private Declare Function inet_addr Lib "wsock32" (ByVal s As String) As Long
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long
Private Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Long, ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal Timeout As Long) As Long

Private Function GetStatusCode(status As Long) As String
    On Error GoTo ErrLine
    Dim Msg As String
    GetStatusCode = ""
    Select Case status
        Case IP_SUCCESS
        Msg = "ip success"
        Case INADDR_NONE
        Msg = "inet_addr: bad IP format"
        Case IP_BUF_TOO_SMALL
        Msg = "ip buf too_small"
        Case IP_DEST_NET_UNREACHABLE
        Msg = "ip dest net unreachable"
        Case IP_DEST_HOST_UNREACHABLE
        Msg = "ip dest host unreachable"
        Case IP_DEST_PROT_UNREACHABLE
        Msg = "ip dest port unreachable"
        Case IP_DEST_PORT_UNREACHABLE
        Msg = "ip dest port unreachable"
        Case IP_NO_RESOURCES
        Msg = "ip no resources"
        Case IP_BAD_OPTION
        Msg = "ip bad option"
        Case IP_HW_ERROR
        Msg = "ip hw_error"
        Case IP_PACKET_TOO_BIG
        Msg = "ip packet too_big"
        Case IP_REQ_TIMED_OUT
        Msg = "ip req timed out"
        Case IP_BAD_REQ
        Msg = "ip bad req"
        Case IP_BAD_ROUTE
        Msg = "ip bad route"
        Case IP_TTL_EXPIRED_TRANSIT
        Msg = "ip ttl expired transit"
        Case IP_TTL_EXPIRED_REASSEM
        Msg = "ip ttl expired reassem"
        Case IP_PARAM_PROBLEM
        Msg = "ip param_problem"
        Case IP_SOURCE_QUENCH
        Msg = "ip source quench"
        Case IP_OPTION_TOO_BIG
        Msg = "ip option too_big"
        Case IP_BAD_DESTINATION
        Msg = "ip bad destination"
        Case IP_ADDR_DELETED
        Msg = "ip addr deleted"
        Case IP_SPEC_MTU_CHANGE
        Msg = "ip spec mtu change"
        Case IP_MTU_CHANGE
        Msg = "ip mtu_change"
        Case IP_UNLOAD
        Msg = "ip unload"
        Case IP_ADDR_ADDED
        Msg = "ip addr added"
        Case IP_GENERAL_FAILURE
        Msg = "ip general failure"
        Case IP_PENDING
        Msg = "ip pending"
        Case PING_TIMEOUT
        Msg = "ping timeout"
        Case Else
        Msg = "unknown msg returned"
    End Select
    GetStatusCode = Msg
    Exit Function
ErrLine:
End Function

Private Function Ping(sAddress As String, sDataToSend As String, ECHO As ICMP_ECHO_REPLY) As Long
    On Error GoTo ErrLine
    Dim hPort As Long
    Dim dwAddress As Long
    dwAddress = inet_addr(sAddress)
    If dwAddress <> INADDR_NONE Then
        hPort = IcmpCreateFile()
        If hPort Then
            Call IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), 0, ECHO, Len(ECHO), PING_TIMEOUT)
            Ping = ECHO.status
            Call IcmpCloseHandle(hPort)
        End If
    Else
        Ping = INADDR_NONE
    End If
    Exit Function
ErrLine:
    Ping = INADDR_NONE
End Function

Public Function PingIP(ByVal szIp As String) As Boolean
    On Error GoTo ErrLine
    Dim WSAD As WSADATA
    Dim ECHO As ICMP_ECHO_REPLY
    Dim ret As Long
    'Delay 150
    PingIP = False
    PingTime = Empty
    If WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS Then
        ret = Ping(Trim$(szIp), "tanaya", ECHO)
        PingTime = ECHO.RoundTripTime
        If InStr(1, GetStatusCode(ret), "success") <> 0 Then
            WSACleanup
            PingIP = True
            PingTime = ECHO.RoundTripTime
            Exit Function
        End If
    End If
    Exit Function
ErrLine:
End Function

 
摘自:网络整理


VB部分相关文章推荐:


※VB 释放资源文件到指定目录函数

※VB 读取资源文件里面的字符串

※VB中资源文件.res的使用方法详解

※VB6.0中创建和使用文本资源文件

※VB WindowsMediaPlayer 播放

※vb中WindowsMediaPlayer的常用属性和方法

※VB Environ系统环境变量函数大全

※VB 去除文本框粘贴功能

※VB LISTBOX

※VB 删除数组中的重复元素

※VB数组快速排序算法

※关于三个概念:ActiveX、OLE和COM

※VB 获得磁盘的文件系统

※VB中用API实现文件拖放

※加密算法-MD5算法

※VB中使用MD5算法

※VB 全局热键HOOK (不占系统资源版本)

※VB 小技巧自定义TextBox文本框右键菜单

※VB 写下载者代码

※VB 一行代码的诀窍

※VBS教程-wscript对象

※vb枚举进程

※在VB中如何让线程或进程在指定的CPU上运行

※VB判断指定的WORD文档是否被打开

※VB如何读取快捷方式的目标路径

※VB用API控制输入法状态

※为系统加载右键注册控件选项【VB 注册控件】

※VB如何根据窗口标题获得进程名称

※VB快速查找大型文件中包含的字符串

※VB实现可执行文件运行时自删除

※VB 打开txt,bat,jpg 任意后缀程序

※VB 写文件关联程序

※VB 自启动建立右键菜单

※VB 判断IP能否ping通

※VB FTP操作类(可上传、下载、创建文件夹等等)

※VB部分文件汇总B

※Vb 求素数最经典的方法也是最快的方法

※vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

※VB中MsFlexGrid控件的使用细则

※点击MSFlexGrid数据控件的标题进行数据排序

※VB 获取鼠标坐标

※VB中NEW的用法(申请内存空间)

※VB CreateObject函数

※VB中的New 与 CreateObject的区别

※VB ListBox 添加不重复的值

※VB 单击ListView控件某列表头进行排序

※VB 简单实现简体与繁体互转

※VB 阿拉伯数字转换为中文大写数值函数

※VB 获取Textbox文本框中的行数函数


更多精彩>>>

VB 判断IP能否ping通相关推荐

  1. python判断ip能否ping通_Python实现检测服务器是否可以ping通的2种方法

    好想在2014结束前再赶出个10篇博文来,~(>_ python检测服务器是否ping通的2种方法 1.第一种比较挫,就是用ping,python调用shell,这个适用于较少的服务器数量,几百 ...

  2. python判断ip能否ping通_使用Python测试Ping主机IP和某端口是否开放的实例

    使用Python方法 比用各种命令方便,可以设置超时时间,到底通不通,端口是否开放一眼能看出来. 命令和返回 完整权限,可以ping通,端口开放,结果如下: 无root权限(省略了ping),端口开放 ...

  3. python判断ip能否ping通_python 检查IP是否能ping通,并且分别导入两个文件

    #!/usr/bin/python #-*- coding:utf-8 -*- ''' 此脚本主要实现网页的点击量,除了实现次功能点外,还有三个知识点: 1.随机获取代理ip,通过代理ip访问指定站点 ...

  4. C++检测是否ip能够ping通

    最近做项目,相机和plc的连接有时候会突然中断,搜寻了下,找到一个可用的检查 某ip是否可以连通的函数.需要调用icmp.dll ping.h icmp.dll下载点这里 #pragma once # ...

  5. 银河麒麟服务器系统ip可ping通,但是tongweb的默认端口9060、8088不能访问,访问提示404

    问题现象:​银河麒麟服务器系统ip可ping通,但是tongweb的默认端口9060.8088不能访问,访问tongweb应用端口 http://192.168.0.49:9060/console以及 ...

  6. win10能够正常访问网站、ip正常ping通,但是ping域名显示”请求找不到主机......“

    win10能够正常访问网站.ip正常ping通,但是ping域名显示"请求找不到主机-" 1.问题描述 在使用wireshark分析数据包的时候,想要通过ping命令查看域名的ip ...

  7. 银河麒麟服务器系统ip可ping通,但是web的默认端口8080不能访问

    问题现象:​银河麒麟服务器系统ip可ping通,但是端口8080不能访问, 处理思路:问题解决思路:ip能ping通考虑端是否开放,端口是否开放与防火墙的设置有关系,具体步骤如下所示: 检查系统防火墙 ...

  8. 如何解决IP能ping通但无法上网的问题?

    当我们在网络环境中遇到无法上网的问题时,可能会尝试使用ping命令来测试网络连接是否正常.如果ping测试成功,说明我们的IP地址能够和网络中其他设备进行通信,但是无法上网.这种情况下,我们需要采取一 ...

  9. 物理机与虚拟机IP互ping通,而互ping主机名不通

    问题描述: 虚拟机信息: VMware-workstation 10 安装RHEL5.8操作系统.hostname:rhel201.com IP:192.168.1.201 物理机系统:windows ...

最新文章

  1. Web应用中的缓存一致性问题
  2. RocketMQ-初体验RocketMQ(03)_RocketMQ多机集群部署
  3. what does boston dynamics do?
  4. [译文]C# Heap(ing) Vs Stack(ing) in .NET: Part I
  5. 好东西仿Vista窗体
  6. mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化...
  7. ArcGIS中,一个点集里的点两两连线,比如有4个点,就连6条线
  8. vue报错getVueAllUser:67 Uncaught TypeError: Cannot read property 'userId' of undefined
  9. 漫画:面试过程的神回复
  10. 洛谷 P5708 【深基2.习2】三角形面积(C)
  11. C# 快递单批量打印
  12. 扎克伯格引领的硅谷“裸捐”风
  13. 面试官:你对MySQL中的索引了解多少?
  14. 危化品从业人员考试题目及答案
  15. vue+h5仿微信网页版聊天室vueWebChat项目
  16. Kafka入门(一)
  17. 被曝欠薪又放长假,600亿科技巨头爆雷了
  18. 这所C9高校,再添中科院院士!
  19. Microservices Ecosystem Transit Map
  20. 大咖说·图书分享|了不起的JavaScript工程师:从前端到全端高级进阶

热门文章

  1. 惨遭数百万开发者厌弃的五大编程语言!
  2. 微软神操作!Web 版 VS Code 来了!
  3. 抛弃 VS Code 我还能用啥编辑器?| 技术头条
  4. 微信小游戏凭什么拿走开发者 70% 的日流水?
  5. mysql主从同步触发器_Mysql 主从复制触发器问题
  6. java 分级显示_上级部门与下级部门的分类显示
  7. 查漏补缺!java主要包括哪几种开发平台
  8. 字节大牛教你手撕Java学习,神操作!
  9. 第 4 章 MySQL 锁机制
  10. matlab ip 大端,MATLAB格式化输出控制