AutoIt3使用Socket实现监控TCP端口的可用性

AutoIt3 10/25 阅读 878 views次 人气 0
摘要:

AutoIt3支持socket套接字通信,使用TCPStartup()函数启动一个socket连接,使用TCPShutdown()函数来停止socket连接,通过消息循环来判断监控IP或者主机的可用性。

代码案例:

#include<GUIConstantsEx.au3>

$sock = ""

$Form1 = GUICreate("AutoIt3实现PING功能", 328, 447, 193, 125)
$IPin = GUICtrlCreateInput("www.what21.com", 50, 0, 121, 21)
GUICtrlCreateLabel("IP/Host:", 0, 4, 50, 17)
$History = GUICtrlCreateEdit("", 2, 82, 321, 361)
$Go = GUICtrlCreateCheckbox("启动", 250, -2, 75, 25,0)
;;设置背景颜色
;;GUICtrlSetBkColor(-1, 0x009933)
GUICtrlCreateLabel("Port", 178, 4, 23, 17)
$Portin = GUICtrlCreateInput("80", 204, 0, 45, 21)
GUICtrlCreateLabel("内容", 2, 62, 36, 17)
$Gstatus = GUICtrlCreateLabel("......", 74, 30, 196, 41)
GUICtrlSetFont(-1, 26, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)

TCPStartup()

While 1
    $msgb = GUIGetMsg()
    Switch $msgb
        Case $GUI_EVENT_CLOSE
            TCPCloseSocket($sock)
            TCPShutdown()
            Exit
			
        Case BitAND(GUICtrlRead($go),$GUI_CHECKED)
    
        Case BitAND(GUICtrlRead($go),$GUI_UNCHECKED)
            $ip = GUICtrlRead($IPin, 1)
            $port = GUICtrlRead($Portin, 1)
            If $ip = "" Or $port = "" Then
            Else
                $ip = TCPNameToIP($ip)
                Sleep(1000)
                $start = TimerInit()
                $sock = TCPConnect($ip, $port)
                If @error = 1 Then
                    MsgBox(0, "错误", "无效的IP输入!")
                    GUICtrlSetState($go, $GUI_UNCHECKED)
                ElseIf @error = 2 Then
                    MsgBox(0, "错误", "无效/关闭的端口输入!")
                    GUICtrlSetState($go, $GUI_UNCHECKED)
                ElseIf $sock = -1 Then
                    GUICtrlSetData($Gstatus, "离线!")
                    GUICtrlSetFont($gstatus, 26)
                    GUICtrlSetColor($gstatus, 0xFF0093)
                    GUICtrlSetData($History, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "] 离线, "&$ip&":"&$port & @CRLF, GUICtrlRead($History))
                Else
                    $Stop = Round(TimerDiff($start), 2)
                    GUICtrlSetData($Gstatus, "在线!")
                    GUICtrlSetFont($gstatus, 26)
                    GUICtrlSetColor($gstatus, 0x009933)
                    GUICtrlSetData($History, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "] 在线, "&$ip&":"&$port&" ms:" & $Stop & @CRLF, GUICtrlRead($History))
                    TCPCloseSocket($sock)
                EndIf
            EndIf
    EndSwitch
WEnd


功能截图:

AutoIt3使用Socket实现监控TCP端口的可用性.png

评论

该文章不支持评论!

分享到: