Windows 10에서 두 가지 다른 버전의 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. 소켓을 사용하세요(스크립팅 인덱스에서 확인하세요). 따라서 JMP17은 포트와 통신하고 JMP16은 포트를 수신하고 그에 따라 반응합니다.
2. "프로그램 실행"을 사용하십시오(스크립팅 인덱스에서 확인하십시오). 이를 위해 JMP16은 JMP17의 존재를 알지 못합니다.
왜 JMP17과 JMP16인지 궁금합니다. 왜 JMP17과 JMP17이 아닌가? 돌아다니고 싶은 불편함이 있는 것 같습니다. 저게 뭐에요?
예, 동시에 여러 JMP 프로세스가 열려 있는 경우가 많습니다.
JMP16과 17을 동시에 사용하면 클릭이 더 쉬워집니다.
두 프로세스 모두 JMP 17이면 듣기가 더 쉽나요?
JSL로 어떻게 구현하나요?
저는 이제 구현을 돕기 위해 AutoHotkey를 사용하고 있습니다.
전문가님 감사합니다!
리소스 소비 문제 외에 두 개 이상의 JMP17을 동시에 실행하는 것을 막을 수 있는 방법은 없다고 생각합니다. 동일한 버전의 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();
다음은 Run Program을 사용한 예입니다.
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);