Обсуждение статьи "Работа с сокетами в MQL, или Как стать провайдером сигналов" - страница 5

 
pavlick_:

У меня получился такой синхронный TCP клиент:

На мкл мне сервер не нужен, поэтому только клиент. Проверил поверхностно.

ЗЫ: Спасибо за статью.

На этапе компиляции ругается на преобразования структур :-(.

'cannnot cast Data_cz_char -> Data_cz_int ' и наоборот. 

Хотя раньше вроде работало. Похоже, что после очередного обновления терминала перестало.

В чем проблема? никак не пойму.

 
Dmitriy Strelnikov:

В чем проблема? никак не пойму.

union
 
o_o:
union


Спасибо за ответ. Однако, вопрос не потерял актуальности.  В MQL4 вроде не поддерживаются объединения. По крайней мере в доке так сказано.

Так же по мере разбирательства возникли еще вопросы:

- В процедурах send и recv параметр int flags (последний) никак не освещен. Я случае с send он принимает значение - 0, а в recv - 8, почему?

- В исходном посте сказано, что клиент синхронный, а в примере реализована только отправка строки на сервер. А как же ответ ... .

Пардон за чайниковские вопросы. Пытаюсь разобраться, но пока не получается ..., если можете помогите плз.

Хочется реализовать рабочий класс для взаимодействия со сторонним сервером многих клиентов. Пока топчусь на месте, увы.  

 
Dmitriy Strelnikov:


Спасибо за ответ. Однако, вопрос не потерял актуальности.  В MQL4 вроде не поддерживаются объединения. По крайней мере в доке так сказано.

Так же по мере разбирательства возникли еще вопросы:

- В процедурах send и recv параметр int flags (последний) никак не освещен. Я случае с send он принимает значение - 0, а в recv - 8, почему?

- В исходном посте сказано, что клиент синхронный, а в примере реализована только отправка строки на сервер. А как же ответ ... .

Пардон за чайниковские вопросы. Пытаюсь разобраться, но пока не получается ..., если можете помогите плз.

Хочется реализовать рабочий класс для взаимодействия со сторонним сервером многих клиентов. Пока топчусь на месте, увы.  

Forum on trading, automated trading systems and testing trading strategies

Code breaking changes in MQL4 language

Alain Verleyen, 2017.05.18 22:10


They introduced union (not documented on MT4, but works well with 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:


ДА! Работают объединения. СПАСИБО! Я так понял, что с 12-ого мая 2017-ого была добавлена поддержка union. Замечательно!

Разработчикам не плохо было бы в доке это отразить.

Простой примерчик иллюстрирующий работу с union

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

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

void OnStart()
  {
//---
   a.intN = 555; 
   
   // uint     - 4 байта 
   // uchar[4] - массив из 4-ёх элементов по одному байту
   // 555 десячеричное, это 0000 0000 0010 1011 двоичное 4-ёх байтовое
   // соответственно, это массив из 4-ёх десячеричных цифр 0 0 2 43  

   Alert(IntegerToString(a.intN) + ", побайтово - " + IntegerToString(a.c[0]) + ", " + IntegerToString(a.c[1]) + ", " + IntegerToString(a.c[2]) + ", " + IntegerToString(a.c[3]));
  }
 
 
Dmitriy Strelnikov:

- В процедурах send и recv параметр int flags (последний) никак не освещен. Я случае с send он принимает значение - 0, а в recv - 8, почему?

потому что сочиняете. не вижу я флагов =8

- В исходном посте сказано, что клиент синхронный, а в примере реализована только отправка строки на сервер. А как же ответ ... .

с такими формулировками вопросов лучше сюда обратиться
 
o_o:

потому что сочиняете. не вижу я флагов =8

с такими формулировками вопросов лучше сюда обратиться


Уважаемый, ГУРУ! Не имею такой привычки, сочинять.  Ошибка моя, видимо заключалась в том, что вопросы были адресованы пользователю с ником pavlick_ и касались класса TCP_Client, реализованного им и представленного в данной ветке выше -  https://www.mql5.com/ru/forum/91150/page3#comment_2798881

Так что прошу прощения за беспокойство. Однако, такой бурной, если не сказать больше, реакции от Вас не ожидал.

Поверьте, иногда бывает полезно сдерживать свои негативные эмоции. 

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

Дитто! Вопрос!

 
MetaQuotes Software Corp.:

Опубликована новая статья Работа с сокетами в MQL, или Как стать провайдером сигналов:

Автор: o_O


Здравствуйте, Этот код работает на MQL4?

Я пытаюсь перенести его на mql4, и когда функция DLL bind() вызывается в функции MQL StartServer, выдает мне сообщение ниже:

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:

Привет, Этот код работает на MQL4?

Исходный код был скомпилирован для x64

Вам необходимо изменить все указатели на 32-битные

например, использовать SOCKET32 вместо SOCKET64 и т.д.