使用 autoitx编写一个服务端和客户端服务端要求能显示客户端所发送过来的数据并带有GUI界面以列表显示客户端接收到的信息。接收信息包括显示机器名、IP、MAC、子网掩码、网关、DNS、分辨率、操作系统版本上线时间下线时间客户端要求能获取Windows系统的机器名、IP、MAC、子网掩码、网关、DNS、分辨率操作系统版本上线时间下线时间
以下是使用AutoItX编写的服务端和客户端的示例代码:
服务端代码:
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <MsgBoxConstants.au3>
Local $CLIENT_INFO[10][10] ; 用于存储客户端信息的数组
; 创建GUI界面
Local $hGUI = GUICreate("服务端", 400, 300)
Local $ListView = GUICtrlCreateListView("机器名|IP|MAC|子网掩码|网关|DNS|分辨率|操作系统版本|上线时间|下线时间", 10, 10, 380, 280, BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL))
_GUICtrlListView_SetExtendedListViewStyle($ListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
GUISetState(@SW_SHOW)
While 1
Local $iMsg = GUIGetMsg()
Switch $iMsg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func AddClientInfo($aInfo)
_ArrayAdd($CLIENT_INFO, $aInfo)
_GUICtrlListView_AddItem($ListView, $aInfo[0])
For $i = 1 To UBound($aInfo) - 1
_GUICtrlListView_AddSubItem($ListView, _GUICtrlListView_GetItemCount($ListView) - 1, $aInfo[$i], $i)
Next
EndFunc
客户端代码:
#include <Array.au3>
#include <AutoItConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WinAPIEx.au3>
#include <WinAPIFiles.au3>
#include <WinAPISys.au3>
Local $SERVER_IP = "127.0.0.1" ; 服务端IP地址
Local $SERVER_PORT = 8888 ; 服务端端口号
; 获取客户端信息
Local $sMachineName = @ComputerName
Local $sIP = _GetIPAddress()
Local $sMAC = _GetMACAddress()
Local $sSubnetMask = _GetSubnetMask()
Local $sGateway = _GetGateway()
Local $sDNS = _GetDNS()
Local $sResolution = @DesktopWidth & "x" & @DesktopHeight
Local $sOSVersion = @OSVersion
Local $sOnlineTime = @Hour & ":" & @Min & ":" & @Sec
Local $sOfflineTime = ""
; 创建Socket连接
Local $iSocket = TCPConnect($SERVER_IP, $SERVER_PORT)
If $iSocket = -1 Then
MsgBox($MB_ICONERROR, "错误", "无法连接到服务端")
Exit
EndIf
; 发送客户端信息到服务端
Local $aClientInfo[10] = [$sMachineName, $sIP, $sMAC, $sSubnetMask, $sGateway, $sDNS, $sResolution, $sOSVersion, $sOnlineTime, $sOfflineTime]
Local $sData = _ArrayToString($aClientInfo, "|")
TCPSend($iSocket, $sData)
; 关闭Socket连接
TCPCloseSocket($iSocket)
Func _GetIPAddress()
Local $aIPConfig = IPConfigGet()
For $i = 1 To $aIPConfig[0][0]
If $aIPConfig[$i][0] = "IPv4" Then
Return $aIPConfig[$i][1]
EndIf
Next
Return ""
EndFunc
Func _GetMACAddress()
Local $sMAC = ""
Local $aAdapterInfo = _WinAPI_GetAdapterInfo()
For $i = 1 To $aAdapterInfo[0][0]
If $aAdapterInfo[$i][2] <> "" Then
$sMAC = $aAdapterInfo[$i][2]
ExitLoop
EndIf
Next
Return $sMAC
EndFunc
Func _GetSubnetMask()
Local $aIPConfig = IPConfigGet()
For $i = 1 To $aIPConfig[0][0]
If $aIPConfig[$i][0] = "IPv4" Then
Return $aIPConfig[$i][2]
EndIf
Next
Return ""
EndFunc
Func _GetGateway()
Local $aIPConfig = IPConfigGet()
For $i = 1 To $aIPConfig[0][0]
If $aIPConfig[$i][0] = "IPv4" Then
Return $aIPConfig[$i][3]
EndIf
Next
Return ""
EndFunc
Func _GetDNS()
Local $aIPConfig = IPConfigGet()
For $i = 1 To $aIPConfig[0][0]
If $aIPConfig[$i][0] = "IPv4" Then
Return $aIPConfig[$i][4]
EndIf
Next
Return ""
EndFunc
注意:以上代码仅为示例,未包含完整的错误处理和异常情况处理。在运行代码前,请确保已经安装了AutoIt和AutoItX,并将AutoItX的DLL文件(AutoItX3.dll)放置在正确的目录下
原文地址: https://www.cveoy.top/t/topic/imU3 著作权归作者所有。请勿转载和采集!