如果我在 Windows 10 中同时打开两个不同版本的 JMP 进程。
我:\00\jmp17\jmp.exe
我:\00\jmp16\jmp.exe
首先打开 JMP 17。
如何在 JMP 17 中编写 JSL 实现以在 JMP 16 中已打开的计算机上运行另一个 JSL?
说明 为了加快响应速度,需要在 JMP 16 中运行另一个已打开的 JSL
此屏幕截图是已打开的 JMP 16
谢谢!

我能想到的有几个选择:
1. 使用Socket(从脚本索引中查看)。 因此,您的 JMP17 将与端口通信,而您的 JMP16 将监听端口,并做出相应反应。
2. 使用“运行程序”(从脚本索引中查看)。 为此,JMP16 不知道 JMP17 的存在。
好奇为什么是 JMP17 和 JMP16。 为什么不是 JMP17 和 JMP17? 听起来您想解决一些不便。 那是什么?
我认为除了资源消耗问题之外,没有什么可以阻止您同时运行两个或多个 JMP17。 拥有两个相同版本的 JMP 可以避免您因意外但可能的兼容性问题而头痛。
以下示例基于 OSI > Socket > Listen 中的示例。
这是 JMP 上侦听的脚本:
skt = socket();
skt << bind( "localhost", "80" );
skt << ioctl( FIONBIO, 1 );
skt << listen();
while ( 1,
Wait( 1 );
rc = skt << accept();
If( Starts With( rc[2], "WOULDBLOCK" ),
Print( "no connect attempt yet" )
,
If( rc[2] == "ok",
remoteaddr = rc[3];
Write( "\!nConnection from ", remoteaddr );
conskt = rc[4];
rc = conskt << recv( 1000 );
show(rc);
msg = Blob To Char( rc[3], encoding= "utf-8" );
show(msg);
if (msg=="Stop Listening",
skt << close();
stop()
);
continue();
,
Show( rc );
skt << close();
stop();
)
);
);
这是 JMP 上的脚本:
skt = socket();
skt << connect( "localhost", "80" );
skt << send(Char to Blob("Hello world!"));
skt << close();
skt = socket();
skt << connect( "localhost", "80" );
skt << send(Char to Blob("Stop Listening"));
skt << close();
这是使用运行程序的示例:
Save Text File( "$TEMP/listener.jsl", "\[Show("Hello World!")]\" );
Open("$TEMP/listener.jsl");
rp = Run Program(
Executable("...path to your \Jmp.exe"),
Options({"-FILE \!"" || substr(Get Path Variable( "TEMP" ),2) || "listener.jsl\!""});
);
rp << Is Read EOF;
wait(0);