Websocket은 어떻게 하나요? - 페이지 4

 
Алексей Барбашин :

Fedor, 어디에서 멈췄습니까?

사실 난 앉아있어, 멍청아.

Usercontrol이 있는 창이 나갔습니다. 그게 다야.

 

이 예를 찾았습니다.

 using System;
using System.Text;
using System.Threading.Tasks;
using System.Net.WebSockets;
using System.Threading;
using System.Net;

namespace BinaryWSDemo
{
     class BinaryWS
    {
         private ClientWebSocket ws = new ClientWebSocket();
         private Uri uri = new Uri( "wss://ws.binaryws.com/websockets/v3?app_id=1089" );
            
         public async Task SendRequest( string data)
        {
                
                 while ( this .ws.State == WebSocketState.Connecting){};
             if ( this .ws.State != WebSocketState.Open)
            {
                 throw new Exception( "Connection is not open." );
            }
            
             var reqAsBytes = Encoding.UTF8.GetBytes(data);
             var ticksRequest = new ArraySegment< byte >(reqAsBytes);

            await this .ws.SendAsync(ticksRequest,
                WebSocketMessageType.Text,
                 true ,
                CancellationToken.None);
            
            Console.WriteLine( "The request has been sent: " );
            Console.WriteLine(data);
            Console.WriteLine( "\r\n \r\n" );

            
        }
        
         public async Task StartListen(){
                WebSocketReceiveResult result;
                 while ( this .ws.State == WebSocketState.Open){
                 var buffer = new ArraySegment< byte >( new byte [ 1024 ]);
                     do
                    {
                        result = await this .ws.ReceiveAsync( new ArraySegment< byte >(buffer.Array), CancellationToken.None);

                         if (result.MessageType == WebSocketMessageType.Close)
                        {
                                Console.WriteLine( "Connection Closed!" );
                                 break ;
                        }
                         else
                        {
                             var str = Encoding.UTF8.GetString(buffer.Array, 0 , result.Count);
                            Console.WriteLine( "Received Data at: " + DateTime.Now);
                            Console.WriteLine(str);
                            Console.WriteLine( "\r\n" );
                        }

                    } while (!result.EndOfMessage);
                }
        }
        
         public async Task Connect(){
                Console.WriteLine( "Prepare to connect to: " + this .uri.ToString());
                Console.WriteLine( "\r\n" );
                
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
                await ws.ConnectAsync(uri, CancellationToken.None);
                
                Console.WriteLine( "The connection is established!" );
                Console.WriteLine( "\r\n" );
        }

         static void Main( string [] args)
        {
            
                         string data = "{\"ticks\":\"R_100\"}" ;
            
                         var bws = new BinaryWS();
                        bws.Connect().Wait();
                        
                        bws.SendRequest(data).Wait();
                        bws.StartListen();
            
            Console.ReadLine();
        }
    }
}

Visual Studio 코드에서 실행하려고하는데 C#입니다.

 
Алексей Барбашин :

작동하지 않습니다. ClientWebSocket은 모든 버전의 Windows에서 지원되지 않습니다.

나는 당신에게 검증된 방법을 제안했지만 당신은 당신의 길을 가고 당신의 범프를 채우고 싶어합니다. 당신의 권리.

그러면 원칙적으로 급하게 올라갈 이유가 없습니다. Java를 잘 알고 있으므로 dll을 작성하십시오.

나는 내가 자바를 잘 안다는 말을 하지 않았다. 프로젝트를 설치하고 생성했는데 다음에 무엇을 해야 할지 모르겠습니다. 우리는 예를 찾아야 합니다.

 
Алексей Барбашин :

Fedor, 어떤 목적으로 포럼에 도움을 요청하셨습니까? 각 프로젝트가 고유 한 방식으로 고유하기 때문에 아무도 기성품의 예를 제공하지 않을 것입니다. 벽돌만 같을 수 있습니다. 그들은 그들이 당신에게 제공하는 것입니다.

간단하게 시작하겠습니다. 프로그래밍 경험이 전혀 없습니까? 글쎄, 적어도 mql에서는? 프로그래밍에서 "클래스"가 무엇인지 알고 있습니까?

그렇지

 
Fedor Arkhipov :

안녕하세요 여러분!

websocket을 통해 huobi로부터 견적을 받고 이 견적을 기반으로 오프라인 차트를 작성하는 작업이 있었습니다.

나는 그것을 표준 수단으로 조직하는 것이 불가능하다는 것을 이해했습니다.

Java로 dll을 작성하고 인용문을 얻는 데 사용하는 아이디어가 있었습니다 .

그러한 구현이 가능합니까?

나는 전에 이것을 한 적이 없습니다. 도움을 주시면 대단히 감사하겠습니다!

Java를 호출하는 Mql DLL에서 사용하면 zhp를 통한 편도선보다 시원합니다 :-)

그러나 정말로 원한다면 할 수 있습니다. 그러나 또한 C를 충분히 알고 MT 내부에 스레드가 어떻게 배열되어 있는지, 언제 어떻게 생성/재실행되는지 이해해야 합니다.

Java 및 C/C ++와 친구가 되는 방법 많은 기사, Google에 처음 갈 때 https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI를 얻습니다.

C/C++ 및 Mql과 친구가 되는 방법 지역 기사 보기

한 번 앉아서 중간층 Mql->(c/c++ dll)->Java를 만들 수 있습니다. 디버깅 측면에서 보면 매우 외설적이지만(감정을 확인해야 함) 일단 완료되면 사용합니다.

PS/ 그리고 Mql이 샤프한 방향으로 가고 있다는 느낌이 있지만 Java와 전혀 친화적이지 않습니다 .. 즉, 6th 버전에서는 노력이 낭비됩니다.

Calling Java from C++ with JNI
  • cth027
  • www.codeproject.com
How do we return an array of integers from Java to C++. And this question follows up to 2d and 3d arrays as well. Also what would be the method to call Java function (assuming we are calling static function). Example: ID: method = m_pJVMInstance->m_pEnv->GetStaticMethodID(class, "getIntDataS", "([Ljava/lang/String;)[I"); Calling: jint...
 
Fedor Arkhipov :

나는 내가 자바를 잘 안다는 말을 하지 않았다. 프로젝트를 설치하고 생성했는데 다음에 무엇을 해야 할지 모르겠습니다. 우리는 예를 찾아야 합니다.

현실적이 되세요. 클라이언트/서버 간의 프로토콜을 마스터하시겠습니까? 교환을 위해 기성품을 가져 가라. 그렇지 않으면 익사하게 될 것입니다.

 
Алексей Барбашин :

네, 러시아어 버전입니다.


 
Алексей Барбашин :

차근차근 가볼까요? :)

글쎄, 당신이 날 도와준다면.
 
Алексей Барбашин :

물론 제가 도와드리겠습니다. 그리고 저만 그런 것이 아니길 바랍니다. 메시지에 응답하기 위해 최선을 다하십시오.

좋아요
 

만들어진