Windows 10 で 2 つの異なるバージョンの JMP プロセスを同時に開いているとします。
I:\00\jmp17\jmp.exe
I:\00\jmp16\jmp.exe
最初に JMP 17 が開きます。
すでに開いている JMP 16 のコンピュータ上で別の JSL を実行するために、JMP 17 で JSL 実装を作成するにはどうすればよいですか?
注 応答を高速化するには、すでに開いている JMP 16 で別の JSL を実行する必要があります。
このスクリーンショットは、すでに開いている JMP 16 のものです。
ありがとう!

考えられる選択肢はいくつかあります。
1. Socket を使用します (Scripting Index から確認してください)。 したがって、JMP17 はポートと通信し、JMP16 はポートをリッスンして、それに応じて反応します。
2. 「プログラムの実行」を使用します (スクリプト索引から確認してください)。 このため、JMP16 は JMP17 の存在を知りません。
なぜ JMP17 と JMP16 なのか不思議です。 なぜJMP17とJMP17ではないのでしょうか? 何か不便な点があり、それを回避したいようです。 それは何ですか?
はい、複数の JMP プロセスを同時に開いていることがよくあります。
JMP16と17を同時に使用するとクリックしやすくなります。
両方のプロセスが JMP 17 であると聞きやすくなりますか?
JSLで実装するにはどうすればよいでしょうか?
現在、実装を支援するために AutoHotkey を使用しています。
専門家に感謝します!
リソース消費の問題を除けば、2 つ以上の JMP17 を同時に実行することを妨げるものはないと思います。 同じバージョンの 2 つの JMP を使用すると、予期しない可能性のある互換性の問題による頭痛の種を軽減できます。
以下は、「OSI」>「ソケット」>「リッスン」の例に基づいた例です。
これは、リッスンする 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);