找回密码
 加入
搜索
查看: 2669|回复: 3

[网络通信] 监视连接外网的端口,谢谢---已解决

[复制链接]
发表于 2012-11-3 18:42:34 | 显示全部楼层 |阅读模式
本帖最后由 zzyzzyboy 于 2012-11-8 11:45 编辑

我想监控本机连接外网的邮件服务器也就是POP3端口号是110,如果有程序连接外网的110端口,程序马上弹出窗口告诉我,请问怎么发现连接外网的110端口,谢谢
发表于 2012-11-3 21:37:38 | 显示全部楼层

Local $port_list = @ScriptDir & '\port_list.txt'
RunWait(@ComSpec & " /c " & 'netstat -ano >' & $port_list, '', @SW_HIDE)
Local $file = FileOpen($port_list)
If $file <> -1 Then
        While 1
                Local $line = FileReadLine($file)
                If @error = -1 Then ExitLoop
                If StringInStr($line, ':80') Then
                        Local $aArray = StringSplit($line, Chr(32))
                        MsgBox(4096, '发现占用端口80程序:', _GetProcPath($aArray[$aArray[0]]))
                EndIf
        WEnd
EndIf
FileClose($file)
Func _GetProcPath($iPID)
        Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', 0x00000410, 'int', 0, 'int', $iPID)
        If $aProc[0] = 0 Then Return SetError(1, 0, '')
        Local $vStruct = DllStructCreate('int[1024]')
        DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', _
                        DllStructGetSize($vStruct), 'int_ptr', 0)
        Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', _
                        DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
        If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
        Return $aReturn[3]
EndFunc   ;==>_GetProcPath
 楼主| 发表于 2012-11-3 22:19:29 | 显示全部楼层
鸟人 发表于 2012-11-3 21:37



    追问一下
如果我加个循环不停的检测会不会造成频繁写入PORT_LIST.TXT而严重影响性能,谢谢
发表于 2013-10-4 13:10:27 | 显示全部楼层
谢谢分享,楼主辛苦了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 19:23 , Processed in 0.131404 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表