기고글 토론 "DLLs을 사용하지 않고 명명된 파이프를 사용하여 MetaTrader 5와 통신하기" - 페이지 6

 
Igor Semyonov:

다음과 같은 질문이 있습니다:

문서에 다음과 같이 나와 있습니다:

서버에 연결할 때 'RemoteServerName'이라는 원격 컴퓨터 또는 로컬 컴퓨터를 두 번 확인하여 서버에 연결하세요. 로컬 컴퓨터에서는 모든 것이 작동하고 아무런 문제가 없습니다.

그러나 원격 VPS에서 PipeServer.exe를 실행한 다음 클라이언트 스크립트를 다른 PC의 차트에 던져 RemoteServerName을 VPS에 속한 이름으로변경하면 서버와 클라이언트가 서로 보이지 않고 즉, 채널이 작동하지 않고 연결되지 않습니다.

여기서 문제는 무엇입니까, 특정 VPS의 이름이 처음에 PipeServer.exe에 작성되어야합니까, 아니면 무엇일까요?

해결책을 듣는 것이 흥미로울 것입니다,

개발자가 원격 컴퓨터에 사용할 수있는 가능성을 지정했다면 아마도 작동 할 것입니다.

여기 개발자가 원격 컴퓨터에서이를 실현하는 방법에 대한 예를 들어 도움을 줄 수 있기를 바랍니다.

 

이 클라이언트 서버를 사용하는 기관이 있나요? 무엇을 위해 어떻게 사용하나요?

처음에 읽었습니다:

"터미널의 스크립트가 이 서버에 연결하여 이 서버와 데이터를 교환합니다."

이 서버를 통해 두 개의 다른 터미널에서 실행되는 두 개의 클라이언트를 어떻게 연결할 수 있는지 물어봐도 되나요? 제가 이해하는 한 서버와 테스트에서는 하나의 클라이언트만 서버에 연결하고 이 서버가 수신한 메시지로 무엇을 할 수 있나요?

다음이 필요하지 않습니까?

1) 여러 클라이언트를 기다리는 독립 서버,

2) 각 클라이언트가 고유 ID를 전송하여 연결을 시작해야 합니다,

3) 서버가 수신한 모든 메시지를 연결된 모든 클라이언트에 보내는 서버(메시지를 받은 클라이언트만 제외할 수 있음),

4) 메시지를 보낸 클라이언트의 고유 ID로 시작하는 각 메시지를 보내는 서버?

- 이렇게 하면 클라이언트가 자신의 메시지를 감지하여 서버가 어떤 이유로든 반송한 경우 해당 메시지를 삭제할 수 있습니다.

- 이렇게 하면 클라이언트가 수신해야 하는 클라이언트를 감지할 수 있으며, 이는 클라이언트의 mq4 코드에 포함되어 있어야 합니다.

 
죄송합니다 - 구글에서 번역을 검색했습니다.
요점을 전혀 이해하지 못합니다! 다른 클라이언트에서 데이터를 가져올 때 서버는 데이터로 무엇을합니까?
여기에 합리적인 해결책을 예상했습니다 : 영어 토론 링크. 아마도 누군가가 영어 답변을 작성할 수 있을까요?
감사합니다, 캘리
 

여기에 제시된 솔루션은 비동기식 네임드 파이프에서는 작동하지 않습니다. https://www.mql5.com/en/forum/94343 을 참조하세요.

Newgel

MQL5 Asynchronous named pipes?
MQL5 Asynchronous named pipes?
  • www.mql5.com
I´m trying to integrate MT5 with an external Named Pipe Server application written in C# through named pipes...
 

안녕하세요 메타쿼츠입니다.

WinAPI의 WaitNamedPipe()와 유사한 함수를 MQL4/5에 추가할 계획이 있는지 알려주실 수 있나요?

이러한 함수를 추가하면 서버가 채널 인스턴스를 열 때까지 기다리는 동안 MQL 클라이언트가 무한 루프에서 FileOpen()을 통해 채널을 쿼리할 필요가 없어집니다. 이 기능은 대기 시간이 길 때 특히 유용합니다.

 
codesurfer:

안녕하세요 메타쿼츠입니다.

WinAPI의 WaitNamedPipe()와 유사한 함수를 MQL4/5에 추가할 계획이 있는지 알려주실 수 있나요?

이러한 함수를 추가하면 서버가 채널 인스턴스를 열 때까지 기다리는 동안 MQL 클라이언트가 무한 루프에서 FileOpen()을 통해 채널을 쿼리할 필요가 없어집니다. 이 기능은 대기 시간이 길 때 특히 유용합니다.



이러한 질문은 프로필을 통해 서비스 데스크에서 하는 것이 가장 좋습니다.
 

안녕하세요.

PipeServer.exe를 시작하고 디버그 모드에서 pipeclient.mq5 스크립트를 실행합니다. 스크립트가 여기서 반복되고 있습니다:

//--- 파이프 서버 대기
   while(!IsStopped())
     {
      if(ExtPipe.Open("\\\\REN\\pipe\\MQL5.Pipe.Server",FILE_READ|FILE_WRITE|FILE_BIN)!=INVALID_HANDLE) break;
      if(ExtPipe.Open("\\\\.\\pipe\\MQL5.Pipe.Server",FILE_READ|FILE_WRITE|FILE_BIN)!=INVALID_HANDLE) break;
      Sleep(250);
     }

내가 뭘 잘못하고 있는 걸까요?

시스템: Windows 7 Ultimate (x64 기반 PC), IE 11.00, RDP, UAC, AMD FX-8300 8코어 프로세서 , RAM: 5601 / 8190 Mb, HDD: 14763 / 114370 Mb, GMT+02:00
터미널: MetaTrader 5 x64 빌드 1643 시작(MetaQuotes Software Corp.).

추신: 관리자로 파이프서버를 실행합니다.

 

MQL5+python 테스트 바인더를 시작하는 데 누가 도와줄 수 있나요? 인건비를 보상할 준비가 되어 있습니다.

Python 스크립트에서 함수 호출을 구현하는 작업 예제가 필요합니다.

MQL5에서 파이썬 스크립트와 상호 작용하는 함수를 만들려고 하는데 파일을 통하지 않습니다. 인수를 빠르게 교환해야 합니다.

예를 들어 MT에서 일부 숫자를 전달하면 Python 스크립트가 숫자의 합계를 다시 MT로 반환하는 것과 같은 예제를 제공해 주시면 감사하겠습니다.


 
mavar:

MQL5+python 테스트 바인더를 시작하는 데 누가 도움을 줄 수 있나요? 인건비를 보상할 준비가 되어 있습니다.

Python 스크립트에서 함수 호출을 구현하는 작업 예제가 필요합니다.

MQL5에서 파이썬 스크립트와 상호 작용하는 함수를 만들려고 하는데 파일을 통하지 않습니다. 인수를 빠르게 교환해야 합니다.

예를 들어 MT에서 일부 숫자를 전달하면 파이썬 스크립트가 예를 들어 숫자의 합계를 MT로 다시 반환하는 것과 같은 예를 들어 주시면 감사하겠습니다.


C#으로 서버를 구현했는데 모든 것이 괜찮다고 생각합니다. 파이썬에서는 더 어렵지 않다고 생각합니다.

 

서버에 대한 연결이 열려 있는지 확인하는 기능을 라이브러리에 추가할 계획이 있나요? 제가 알기로는 현재 그런 기능은 없습니다.

서버에 대한 연결이 끊어져도 핸들은 0이 아닌 값을 유지합니다.