文章 "在MQL中操作套接字,或者如何成为信号提供者" - 页 5

 
pavlick_:

我有这样一个同步 TCP 客户端:

我不需要 µl 上的服务器,所以只需要一个客户端。我只是做了表面测试。

ZЫЫ: 感谢您的文章。

在编译阶段,结构转换失败 :-(.

无法将 Data_cz_char 转换为 Data_cz_int,反之亦然。

虽然之前似乎可以工作。在另一次终端更新 后,它似乎停止工作了。

问题出在哪里?

 
Dmitriy Strelnikov:

有什么问题吗?

工会
 
o_o:
工会


感谢您的答复。但是,问题仍然存在。MQL4 不支持联合。至少文档是这么说的。

此外,在我们调查的过程中,又出现了一些问题:

- 在程序 send 和 recv 中,int flags 参数(最后一个)没有以任何方式涉及。在我的例子中,send 的值是 0,而 recv 的值是 8,为什么?

- 原帖说客户端是同步的,但示例只实现了向服务器发送字符串。那么响应....

请原谅我愚蠢的提问。我正在试着弄明白,但还没弄明白......如果您能帮我的话。

我想实现一个工作类,以便与第三方服务器上的许多客户端进行交互。唉,我还是卡住了。

 
Dmitriy Strelnikov:


感谢您的答复。但是,问题仍然存在。MQL4 不支持联合。至少文档是这么说的。

此外,在我调查的过程中,又出现了一些问题:

- 在程序 send 和 recv 中,int flags 参数(最后一个)没有以任何方式涉及。在我的例子中,send 的值是 0,而 recv 的值是 8,为什么?

- 原帖说客户端是同步的,但示例只实现了向服务器发送字符串。那么响应....

请原谅我愚蠢的提问。我正在试着弄明白,但还没弄明白......如果您能帮我的话。

我想实现一个工作类,以便与第三方服务器上的许多客户端进行交互。唉,我还是卡住了。

关于交易、自动交易系统和测试交易策略的论坛

MQL4 语言中的代码破坏性更改

Alain Verleyen, 2017.05.18 22:10


他们引入了union(在MT4 上没有记录,但在 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:


是的!工会有用。谢谢你们据我所知,工会 支持已于 2017 年 5 月 12 日加入。太好了!

开发人员最好能在文档中反映这一点。

一个简单的示例来说明工会 的工作

//+------------------------------------------------------------------+
//| 脚本程序启动功能|
//+------------------------------------------------------------------+

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

void OnStart()
  {
//---
   a.intN = 555; 
   
   // uint - 4 字节 
   // uchar[4] - 包含 4 个元素的数组,每个元素一个字节
   // 十进制为 555,二进制为 4 字节,即 0000 0000 0000 0010 1011。
   // 分别是一个包含 4 个小数位的数组 0 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 参数(最后一个)没有以任何方式覆盖。为什么?

我没看到 flags =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 上,当在 MQLStartServer 函数中调用 DLLbind() 函数时,得到了下面的信息:

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 等。