在MQL5中接受Python生成的套接字的输出
我创建了一个类似于以下内容的套接字文件,并希望套接字的输出必须由MQL5读取。请参阅以下Python代码: 守护进程.py在MQL5中接受Python生成的套接字的输出,python,python-3.x,sockets,zeromq,mql5,Python,Python 3.x,Sockets,Zeromq,Mql5,我创建了一个类似于以下内容的套接字文件,并希望套接字的输出必须由MQL5读取。请参阅以下Python代码: 守护进程.py import socket #import arcpy def actual_work(): #val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "") #return str(val)
import socket
#import arcpy
def actual_work():
#val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")
#return str(val)
return 'dummy_reply'
def main():
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
try:
sock.bind( ('127.0.0.1', 6666) )
while True:
data, addr = sock.recvfrom( 4096 )
reply = actual_work()
sock.sendto(reply, addr)
except KeyboardInterrupt:
pass
finally:
sock.close()
if __name__ == '__main__':
main()
import socket
import sys
def main():
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
sock.settimeout(1)
try:
sock.sendto('', ('127.0.0.1', 6666))
reply, _ = sock.recvfrom(4096)
print reply
except socket.timeout:
sys.exit(1)
finally:
sock.close()
if __name__ == '__main__':
main()
client.py
import socket
#import arcpy
def actual_work():
#val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")
#return str(val)
return 'dummy_reply'
def main():
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
try:
sock.bind( ('127.0.0.1', 6666) )
while True:
data, addr = sock.recvfrom( 4096 )
reply = actual_work()
sock.sendto(reply, addr)
except KeyboardInterrupt:
pass
finally:
sock.close()
if __name__ == '__main__':
main()
import socket
import sys
def main():
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
sock.settimeout(1)
try:
sock.sendto('', ('127.0.0.1', 6666))
reply, _ = sock.recvfrom(4096)
print reply
except socket.timeout:
sys.exit(1)
finally:
sock.close()
if __name__ == '__main__':
main()
请帮助我通过MQL5接受套接字的输出
已编辑
我只希望在MQL5上接受变量中的reply
,该变量由daemon.py
生成。我怎么能做到?假设我希望MQL5打印Python的响应,如上例所示,我希望MQL5尽可能以字符串变量的形式输出dummy\u reply
ZeroMQ有任何可能性吗
我希望使用MQL5而不是Python来完成
client.py
。请帮助我。请找到一个运行示例。重要的元素是在发送应答之前创建有效负载的字节对象,而不是字符串。套接字对象只生成和接收字节
导入套接字
导入线程
导入系统
def实际工作(数据):
打印(数据)
返回b'ACK'
def守护进程():
sock=socket.socket(socket.AF_INET,socket.sock_DGRAM)
sock.setsockopt(socket.SOL_socket,socket.SO_REUSEADDR,1)
袜子装订('127.0.0.1',6666))
打印(“在udp%s上侦听:%i”%('127.0.0.1',6666))
尝试:
尽管如此:
数据,addr=sock.recvfrom(4096)
ack=实际工作(数据)
sock.sendto(确认,地址)
例外情况除外,如e:
打印(e)
最后:
sock.close()
def client():
sock=socket.socket(socket.AF_INET,socket.sock_DGRAM)
sock.settimeout(1)
尝试:
短袜发送到(b'payload',('127.0.0.1',6666))
答复u=sock.recvfrom(4096)
打印(答复)
除了socket.timeout作为e:
打印(e)
系统出口(1)
最后:
sock.close()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
线程=线程。线程(目标=守护进程)
thread.start()
客户()
客户()
客户()
客户()
#在这里发布kill线程
thread.join()
这里有基本的UDP客户端/服务器示例代码。这与MQL5有什么关系?您希望与MQL5通信的具体内容是什么?@AKX我只希望在MQL5上接受变量中的应答
,这是由daemon.py
生成的。我怎么能做到?假设我希望MQL5打印python的响应,如上例所示,我希望MQL5在可能的情况下以字符串变量的形式输出dummy\u reply
。您得到了我想要的结果,或者您有任何问题。请随便问。有人能帮我吗?请告诉我。太遗憾了!。。没有人能回答我的问题。我想每次我申请时,我的奖金都被浪费了。