对于一些负载测试模拟,我正在研究使用 AHK 1.1 编写脚本。问题是我们有一个具有多个工作站的客户端-服务器设置,所以我真的希望能够触发相同的脚本(甚至变体)同时在多台 PC 上运行,以准确模拟多个用户都在锤击系统。
更有用的是确保相同的测试恰好在同一时间(在某些公差范围内)发生,以检查这是否会导致问题。
最好的方法是什么?从 AHK 本身内部执行,还是使用一些单独的远程控制工具让我在我选择的 PC 上触发脚本?
ahk,您将需要脚本充当服务器和客户端,因此无论使用哪种方法,都需要运行它们......
至于 TCP/IP,你可以这样做,你只需要找出你的脚本是否可以使用任何可用/打开的帖子......
前几天我刚刚帮助一个澳大利亚人设置了很多服务器/客户端脚本
使用 Bentschi 的套接字类看起来像这样
服务器:
;Server
#include Socket.ahk
myTcp := new SocketTCP()
myTcp.bind("addr_any", 54321)
myTcp.listen()
myTcp.onAccept := Func("OnTCPAccept")
return
OnTCPAccept(this)
{
newTcp := this.accept()
newTcp.onRecv := func("OnTCPRecv")
newTcp.sendText("Connected")
}
OnTCPRecv(this)
{
msgbox % this.recvText()
}
客户:
;Client
#include Socket.ahk
myTcp := new SocketTCP()
myTcp.connect("your servers A_IPAddress1", 54321) ; lokal
myTcp.onRecv := Func("OnTcpRecv")
return
OnTcpRecv(this)
{
ToolTip % this.RecvText()
}
但是要使用和/或设置类似的东西,您可能需要知道哪些端口在网络上可用,或者能够根据需要更改设置。
TCP/IP 脚本的速度在低毫秒内(在我的网络上低于 20),所以没有真正的容忍度可言。
希望对你有帮助
正如Sidola所写,您可以检查共享文件夹中的某些文件或文件夹。您可以使用IfExists 命令。下面是示例:
Loop
{
IfExist, c:a.txt
{
break
}
}
;code to execute if c:a.txt exists comes below.
MsgBox, 1
您还可以添加睡眠命令以减轻对hdd的压力,例如下面的代码:
Loop
{
IfExist, c:a.txt
{
break
}
Sleep, 1000
}
;code to execute if c:a.txt exists comes below.
MsgBox, 1
另外,请始终使用AutoHotkey及其从 http://ahkscript.org/的文档(当前最新版本,新的官方网站)!AutoHotkey及其 autohotkey.com 文档已经过时,使用它们可能会遇到一些问题!
我无法提供实际代码,但是有一种方法可以通过 Admin$ 共享将服务注入您的 LAN 机器并远程控制它。这样,AHK就不需要一直在LAN计算机上运行。
我不知道这究竟是如何完成的,但是 PsShutdown 这样做是为了休眠 LAN PC,这通常是不可能的。
如果您真的设法做到了,如果您可以分享它,那就太好了。