Diskussion zum Artikel "Arbeiten mit Sockets in MQL, oder Wie man ein Signalprovider wird" - Seite 5

 
pavlick_:

Ich habe einen solchen synchronen TCP-Client:

Ich brauche keinen Server auf µl, also nur einen Client. Oberflächlich getestet.

ZЫЫ: Danke für den Artikel.

Bei der Kompilierung scheitert es an Strukturkonvertierungen :-(.

'cannnot cast Data_cz_char -> Data_cz_int ' und umgekehrt.

Obwohl es vorher zu funktionieren schien. Nach einem weiteren Terminal-Update scheint es nicht mehr zu funktionieren.

Wo liegt das Problem, ich verstehe es nicht.

 
Dmitriy Strelnikov:

Wo liegt das Problem? Ich verstehe es nicht.

gewerkschaft
 
o_o:
Gewerkschaft


Ich danke Ihnen für Ihre Antwort. Die Frage ist jedoch nach wie vor relevant. MQL4 unterstützt keine Unions. Zumindest steht das so in der Dokumentation.

Außerdem sind bei meinen Nachforschungen einige weitere Fragen aufgetaucht:

- In den Prozeduren send und recv ist der Parameter int flags (der letzte) in keiner Weise abgedeckt. In meinem Fall nimmt er bei send den Wert 0 an, und bei recv den Wert 8, warum?

- Der ursprüngliche Beitrag sagt, dass der Client synchron ist, aber das Beispiel implementiert nur das Senden eines Strings an den Server. Was ist mit der Antwort ... .

Verzeihen Sie mir meine Dummie-Fragen. Ich versuche, es herauszufinden, aber ich bin nicht bekommen es noch ... wenn Sie mir bitte helfen können.

Ich möchte eine Arbeitsklasse für die Interaktion mit einem Drittanbieter-Server von vielen Clients zu implementieren. Ich bin immer noch stecken, leider.

 
Dmitriy Strelnikov:


Vielen Dank für die Antwort. Allerdings ist die Frage immer noch relevant. MQL4 unterstützt keine Unions. Zumindest steht das so in der Dokumentation.

Außerdem sind bei meinen Nachforschungen einige weitere Fragen aufgetaucht:

- In den Prozeduren send und recv ist der Parameter int flags (der letzte) in keiner Weise abgedeckt. In meinem Fall nimmt er bei send den Wert 0 an, und bei recv den Wert 8, warum?

- Der ursprüngliche Beitrag sagt, dass der Client synchron ist, aber das Beispiel implementiert nur das Senden eines Strings an den Server. Was ist mit der Antwort ... .

Verzeihen Sie mir meine Dummie-Fragen. Ich versuche, es herauszufinden, aber ich bin nicht bekommen es noch ... wenn Sie mir bitte helfen können.

Ich möchte eine Arbeitsklasse für die Interaktion mit einem Drittanbieter-Server von vielen Clients zu implementieren. Ich bin immer noch stecken, leider.

Forum über den Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Codebrechende Änderungen in der Sprache MQL4

Alain Verleyen, 2017.05.18 22:10


Sie haben Union eingeführt (nicht auf MT4 dokumentiert , aber funktioniert gut mit ME 1599) :

union Udata_32bytes 
  {
   uchar             d_uchar[32];
   ulong             d_ulong[4];
  }
data;

void OnStart()
  {
   data.d_ulong[0]=0xFFEEDDCC;
   
   printf("uchar[%i] = %X",1,data.d_uchar[1]);

  }

 
Alain Verleyen:


YES! Die Verbände arbeiten. DANKE!!! Ich habe gehört, dass die Unterstützung der Gewerkschaften ab dem 12. Mai 2017 hinzugefügt wurde. Großartig!

Es wäre gut, wenn die Entwickler dies in der Dokumentation vermerken würden.

Ein einfaches Beispiel zur Veranschaulichung der Arbeit mit Union

//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+

union AS {
   uint intN;
   uchar c[4];
} a;

void OnStart()
  {
//---
   a.intN = 555; 
   
   // uint - 4 Bytes 
   // uchar[4] - ein Array mit 4 Elementen von je einem Byte
   // 555 dezimal, das ist 0000 0000 0000 0010 1011 binär 4-Byte.
   // bzw. ein Feld mit 4 Dezimalstellen 0 0 0 2 43 

   Alert(IntegerToString(a.intN) + ", Byte für Byte " + IntegerToString(a.c[0]) + ", " + IntegerToString(a.c[1]) + ", " + IntegerToString(a.c[2]) + ", " + IntegerToString(a.c[3]));
  }
 
 
Dmitriy Strelnikov:

- In den Verfahren send und recv ist der Parameter int flags (der letzte) in keiner Weise abgedeckt. Bei send nimmt er den Wert 0 an, bei recv aber den Wert 8. Warum?

Weil Sie sich etwas ausdenken, denn ich sehe nicht, dass flags =8 ist.

- Im Originalbeitrag steht, dass der Client synchron ist, und das Beispiel implementiert nur das Senden eines Strings an den Server. Was ist mit der Antwort ... .

Bei solchen Formulierungen von Fragen ist es besser, hier anzusetzen
 
o_o:

Weil du es dir ausdenkst. Ich sehe keine Fahnen =8

Bei solchen Formulierungen von Fragen ist es besser, hier zu antworten .


Lieber GURU! Ich habe nicht die Angewohnheit, Dinge zu erfinden. Mein Fehler war offenbar, dass die Fragen an den Benutzer mit dem Nickname pavlick_ gerichtet waren und die von ihm implementierte und in diesem Thread oben vorgestellte Klasse TCP_Client betrafen - https://www.mql5.com/ru/forum/91150/page3#comment_2798881.

Ich entschuldige mich also für die Störung. Allerdings habe ich eine so stürmische, um nicht zu sagen, heftige Reaktion von Ihnen nicht erwartet.

Glauben Sie mir, manchmal ist es nützlich, seine negativen Emotionen zu zügeln.

Обсуждение статьи "Работа с сокетами в MQL, или Как стать провайдером сигналов"
Обсуждение статьи "Работа с сокетами в MQL, или Как стать провайдером сигналов"
  • 2016.09.08
  • www.mql5.com
Опубликована статья Работа с сокетами в MQL, или Как стать провайдером сигналов: Автор: o_O Версии библиотеки 1...
 

Dito! Dito Frage!

 
MetaQuotes Software Corp.:

Der neue Artikel Arbeiten mit Sockets in MQL, oder Wie man ein Signalanbieter wird wurde veröffentlicht:

Autor: o_O


Hallo, Dieser Code funktioniert auf MQL4 ?

Ich versuche, ihn auf MQL4 zu portieren, und wenn die DLL bind() -Funktion bei der MQL StartServer-Funktion aufgerufen wird, erhalte ich die folgende Meldung:

2017.09.13 18:06:30.181 Server AUDCAD,H1: try bind...0.0.0.0:8081
2017.09.13 18:06:30.181 Access violation read to 0x00000012 in 'Ws2_32.dll'


 
Wemerson Guimaraes:

Hallo, Dieser Code funktioniert auf MQL4 ?

Quelle wurde für x64 kompiliert

Sie müssen alle Zeiger auf 32 Bit ändern

z.B. SOCKET32 statt SOCKET64 usw. verwenden