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

 

新文章 在MQL中操作套接字,或者如何成为信号提供者已发布:

套接字(Sockets)… 如果没有它们,我们的IT世界还可能存在吗?时光倒转回1982年,再到现在,它们每分每秒都与我们同在,这是网络的基础,是我们所居住的 Matrix 世界的神经末梢。

演示这些代码的互操作:


细心的读者将会注意到,客户端套接字可以通过调用 MQL 函数中的 WebRequest 来替换的,为此,只要加上一系列HTTP 头部(header)行并且在客户终端的设置中允许访问服务器的URL就可以了,您可以自己来做实验。

作者:o_O

 

文章很酷,但应用的目的是什么?这是一项如此低级的技术,即使是一个简单的示例也需要写这么多,而且如果有什么严重的问题?

反正你也不能把它放到市场上,对你自己来说,最好还是使用WCF。 或者使用wininet.dll,如果是简单的东西,它已经包含在 Windows 中了。

是的,对于WCF ,你必须与 .NET 建立连接,但这样一来,生活就变成了假期。我们交换的是字节包,因此有必要将其分解为组件,并直接将其分解为类的实例。您可以在任何模式下工作 - http、二进制、https 和其他所有模式。同时,整个 gemmor 的授权、解析等工作已由微软人员负责。

这篇文章可以说是一次历史性的旅行,让我们回到了电脑内存为 640 Kb、螺丝为 40 Mb(确切地说是兆字节:)的年代。)

Основные сведения о WinInet
Основные сведения о WinInet
  • msdn.microsoft.com
Если производный объект CInternetSession, переопределите OnStatusCallback и включить обратные вызовы состояния, MFC вызывает пользовательскую функцию OnStatusCallback со сведениями о ходе выполнения о работе полностью в этом сеансе Интернета. Поскольку один сеанс может поддерживать несколько подключений (, по своим времени существования, можно...
 

没错,方法有很多。

但当务之急仍然是减少自写的 dll,而可用内存的数量与此毫无关系。

在市场上,这种东西不太可能出现,就服务器部分而言,MK 的政策到目前为止只允许你成为信息的消费者,而且往往是在沙盒中。

但客户端是完全有可能的,因为网络请求和命名通道 已经出现。

 
Alexey Volchanskiy:

文章很酷,但应用的目的是什么?这是一项如此低级的技术,即使是一个简单的示例也需要写这么多,而且如果有什么严重的问题?

反正你也不能把它放到市场上,对你自己来说,最好还是使用WCF。 或者使用wininet.dll,如果是简单的东西,它已经包含在 Windows 中了。

是的,对于WCF ,你必须与 .NET 建立连接,但这样一来,生活就变成了假期。我们交换的是字节包,因此有必要将其分解为组件,并直接将其分解为类的实例。您可以在任何模式下工作 - http、二进制、https 和其他所有模式。同时,整个 gemmor 的授权、解析等工作都已由微软人员负责。

这篇文章可以说是一次历史性的旅行,让我们回到了那个电脑内存只有 640 Kb,而螺丝钉却有 40 Mb(正好是兆字节:)的时代。)

如果有办法从 dll 向终端发送 USER_EVENT,那就完全没有问题了--所有与交易(通信和图形用户界面)无关的功能都可以从终端....。

但这样一来,异步套接字在 mql 中就无法工作了(或者说可以工作,但有限制),而同步 tcp 很容易让 EA 挂起......:-(

 
Maxim Kuznetsov:

因此,问题仍然是异步套接字无法在 mql 中使用(或者说可以,但有限制)。

您不喜欢文章中的异步套接字吗? 您认为它有哪些限制?
 

MQL5 将很快拥有原始客户端(无服务器)网络功能,包括 UDP。

通过允许的 IP 地址和 URL 列表进行控制,就像现在的WebRequest 一样。

 
o_O:
你不喜欢文章中的异步套接字? 你认为它有什么局限性?

首先,文章中说的是 UDP,而不是 TCP。所以这就是它的意思。

严格来说,它只是一个非阻塞套接字,而不是异步操作。

 
o_O:

没错,方法有很多。

但当务之急仍然是减少自写的 dll,而可用内存的数量与此毫无关系。

在市场上,这种东西不太可能出现在服务器部分,MK 的政策到目前为止只允许你成为信息的消费者,而且往往是在沙盒中。

而客户端则是相当的,因为网络请求和命名通道 已经出现了。

因此,我写道,使用 wininet.dll 会更容易,但还是高了一层。不过,还是有人喜欢用汇编程序来编写 )
 
Maxim Kuznetsov:

首先,这篇文章说的是 UDP,而不是 TCP。这才是文章的主题。

而且严格来说,只给出了非阻塞套接字,根本没有异步操作。

))))) 是的......读完这篇文章就得五分。

 
Alexey Volchanskiy:
所以我写道,使用 wininet.dll 更简单。

你们怎么能如此肯定,wininet.dll 将在服务器创建方面取代套接字?

你们真让我吃惊。

马克西姆-库兹涅佐夫(Maxim Kuznetsov )认为这篇文章是关于 UDP 的。

阿列克谢-沃尔昌斯基(Alexey Volchanskiy认为 是关于 http 请求的。

总之,这完全是一派胡言,我们只能以貌取人。

有了这样的 "专家",论坛已经跌入谷底。

 
o_O:

你们怎么能如此肯定 wininet.dll 将在服务器创建方面取代套接字?

你们真让我吃惊。

马克西姆-库兹涅佐夫(Maxim Kuznetsov )认为这篇文章是关于 UDP 的。

阿列克谢-沃尔昌斯基(Alexey Volchanskiy认为 是关于 http 请求的。

总之,这完全是一派胡言,我们只能以貌取人。

有这样的 "专家 "存在的论坛已经深入到了底层。

这是低级网络编程论坛吗?)))