首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >关于mt5使用socket连接python服务端的问题?

关于mt5使用socket连接python服务端的问题?

提问于 2024-07-23 01:44:37
回答 0关注 0查看 45

我在尝试实现用python的socket库和mt5自带的socket来实现传递mysql数据的信息,但是python那边的服务端收得到socket发送的数据,mt5能成功连接成功发送但接受数据时一直提示5273错误,尝试过更改发送的编码和发送的数据但一直没有用,有大佬知道为什么吗?

这是mt5的代码,用的是帮助文档里写的。

代码语言:javascript
运行
AI代码解释
复制
class HangStrategy {
public:


    datetime lastBarTime;//最新k线开盘时间
    datetime         Time[];

    bool         ExtTLS;

    virtual void              init() {

        ExtTLS = false;
    }

    //运行EA
    virtual void              run() {
        //初始化信号系统
        ArraySetAsSeries(Time, true);
        CopyTime(_Symbol, _Period, 0, 10, Time);


        //开仓时点
        if(lastBarTime < Time[0]) {
            //上次K线时间小于当前K线时间,新K线
            lastBarTime = Time[0];

            Print("------------------开始测试------------------");
            int socket = SocketCreate();
            //--- 检查句柄
            if(socket != INVALID_HANDLE) {
                //--- 一切顺利情况下继续连接
                if(SocketConnect(socket, Address, Port, 1000)) {
                    Print("Established connection to ", Address, ":", Port);

                    string   subject, issuer, serial, thumbprint;
                    datetime expiration;
                    //--- 如果连接受到证书保护,则显示其数据
                    if(SocketTlsCertificate(socket, subject, issuer, serial, thumbprint, expiration)) {
                        Print("TLS certificate:");
                        Print("   Owner:  ", subject);
                        Print("   Issuer:  ", issuer);
                        Print("   Number:     ", serial);
                        Print("   Print: ", thumbprint);
                        Print("   Expiration: ", expiration);
                        ExtTLS = true;
                    }
                    //--- 向服务器发送GET请求
                    //GET / HTTP/1.1\r\nHost: www.mql5.com\r\nUser-Agent: MT5\r\n\r\n
                    if(HTTPSend(socket, "get_data")) {
                        Print("GET request sent");
                        //--- 读取响应
                        if(!HTTPRecv(socket, 1000))
                            Print("Failed to get a response, error ", GetLastError());
                    } else
                        Print("Failed to send GET request, error ", GetLastError());
                } else {
                    Print("Connection to ", Address, ":", Port, " failed, error ", GetLastError());
                }
                //--- 用后关闭套接
                SocketClose(socket);
            } else
                Print("Failed to create a socket, error ", GetLastError());
        }
    }


//+------------------------------------------------------------------+
//| 向服务器发送命令                                                   |
//+------------------------------------------------------------------+
    bool HTTPSend(int socket, string request) {
        char req[];
        int  len = StringToCharArray(request, req) - 1;
        if(len < 0)
            return(false);
//--- 如果通过443端口使用安全TLS连接
        if(ExtTLS)
            return(SocketTlsSend(socket, req, len) == len);
//--- 如果使用标准的TCP连接
        return(SocketSend(socket, req, len) == len);
    }
//+------------------------------------------------------------------+
//| 读取服务器响应                                                     |
//+------------------------------------------------------------------+
    bool HTTPRecv(int socket,uint timeout) { 
      char   rsp[]; 
      string result; 
      uint   timeout_check=GetTickCount()+timeout; 
//--- 读取套接数据,直至套接数据不长过超时且仍然存在 
      do { 
         int len=SocketIsReadable(socket); 
         if(len) { 
            int rsp_len; 
            //--- 各种读取命令,取决于连接是否安全 
            if(ExtTLS) 
               rsp_len=SocketTlsRead(socket,rsp,len); 
            else 
               rsp_len=SocketRead(socket,rsp,len,timeout); 
            //--- 分析响应 
            if(rsp_len>0) { 
                result+=CharArrayToString(rsp,0,rsp_len); 
                //--- 只打印响应标题 
                int header_end=StringFind(result,"\r\n\r\n"); 
                if(header_end>0) { 
                  Print("HTTP answer header received:"); 
                  Print(StringSubstr(result,0,header_end)); 
                  return(true); 
              } 
           } 
        } 
     } 
   while(GetTickCount()<timeout_check && !IsStopped()); 
   return(false); 
  }
};



input string Address = "127.0.0.1"; //socket地址
input int    Port   = 5001; //端口号


//实例化
HangStrategy      hangStrategy;

//初始化脚本的时候执行一次
int              OnInit() {
    hangStrategy.init();
    return(INIT_SUCCEEDED);
}

//价格每次变化执行一次
void             OnTick() {
    hangStrategy.run();
}

复制

这是python服务端的代码

代码语言:javascript
运行
AI代码解释
复制
def handle_client(conn, addr, conn_db, data):
    print(f"Connected with {addr}")  #
    print(f"Received {data}")
    # conn.send("Data received and processed.".encode('utf-8'))
    result = get_data(conn_db)
    # result2 = bytes('hello', 'utf-8')
    try:
        conn.send(str(result).encode())
        print(f"Sent\r\n\r\n")
    except Exception as e:
        print(f"Error during sending data: {e}")
        print(e)
    finally:
        conn.close()

复制

mt5提示的错误信息

谢谢。

回答

成为首答用户。去 写回答
相关文章
视频号如何开通?
视频号独立于公众号,入口内嵌在微信“发现”页面,仅位于朋友圈下方,足以看出微信对视频号的器重
时值五月
2021/06/10
8.8K0
视频号如何开通?
【说站】微信公众号流量主如何开通?公众号流量主开通条件
微信公众号发展至今,微信流量主已经成为自媒体人最普遍、最常见的变现盈利模式。就跟pc时代的百度广告联盟和google adsense广告一样,有流量就可以有收益。但微信流量主并不是每个微信公众号的运营者都可以开通的,那么流量主到底如何开通?微信公众号流量主开通具体有什么要求呢?
很酷的站长
2022/11/24
2.9K0
【说站】微信公众号流量主如何开通?公众号流量主开通条件
视频号小店是什么?如何开通视频号小店API?
微信视频号于2022年7月正式推出“视频号小店“服务,为商家提供商品信息服务、商品交易,支持商家在视频号运营电商。目前视频号小店有个体工商户或企业资质的商家进行开店,企业店需要企业营业执照认证、个体工商户则需要个体工商户营业执照认证。
阿那个沫
2022/12/26
2.8K0
视频号小店是什么?如何开通视频号小店API?
如何快速的开通公众号【原创】功能
2016年12底开通微信公众号[flysnow_org]后,就开始写文章,写了几篇后,发现了一个问题,怎么我的文章前面没有【原创】标记呢,别人的都有。
飞雪无情
2018/08/28
8680
如何快速的开通公众号【原创】功能
php怎么接入公众号
·服务器环境:推荐使用LNMP环境,完美契合PHP开发。(请确保你的服务器已经成功运行PHP,有不清楚的可以私聊楼主)
叫我可儿呀
2019/11/05
2K0
php怎么接入公众号
python爬虫公众号所有信息,并批量下载公众号视频
本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公众号,危险动作,请不要操作!谢谢
Python疯子
2019/12/16
2.7K0
python爬虫公众号所有信息,并批量下载公众号视频
怎么让订阅号单独显示_公众号菜单怎么设置
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说怎么让订阅号单独显示_公众号菜单怎么设置,希望能够帮助大家进步!!!
Java架构师必看
2022/10/24
2.3K0
怎么让订阅号单独显示_公众号菜单怎么设置
微信公众号-公众号推广
为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送
星哥玩云
2022/09/14
9.3K0
微信公众号-公众号推广
微信公众号-公众号介绍
公众号:微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象
星哥玩云
2022/09/14
9.5K0
微信公众号-公众号介绍
腾讯WeTest开通微信视频号啦!
今天,WeTest官方微信视频号正式上线啦!点击下方视频,或者微信视频号搜索【腾讯WeTest】都可以关注我们。 未来,我们会在视频号推送各种有料有趣的视频内容。其中,有腾讯WeTest总经理方亮带来的《高品质手游锻造之路》的主题演讲实录。 想了解腾讯内部如何把控手游产品质量关?看完这个视频你就知道了。 此外,还有更多关于WeTest的产品动态、专家课程、客户故事以及行业资讯等栏目将陆续上线。 最后,如果小伙伴们对腾讯WeTest发布的视频有反馈建议,或是有什么想看的内容,欢迎在评论区留言。我们会认真考虑大
WeTest质量开放平台团队
2022/03/03
1.4K0
如何开通微信公众号同步?(微信打开)
1. .点击右上角按钮「. . .」,选择在浏览器中打开网页
腾讯云开发者社区
2018/01/10
10.2K1
如何开通微信公众号同步?(微信打开)
“清华-腾讯联合实验室”公众号开通了
2010年12月,清华大学计算机系与腾讯公司联合成立“清华大学(计算机系)- 腾讯科技(深圳)有限公司互联网创新技术联合实验室”,2014年,实验室升级为校级联合实验室,清华大学校长邱勇院士和副校长薛其坤院士先后担任联合实验室管委会主任,联合实验室主任为清华大学计算机系胡事民教授。 图1 2010年底时任清华大学党委书记胡和平教授和腾讯公司董事会主席兼CEO马化腾先生为系级联合实验室揭牌 图2 2014年清华大学校长邱勇院士和腾讯公司副总裁王巨宏女士为校级联合实验室揭牌 图3 2020年联
腾讯高校合作
2020/03/10
1.5K0
如何开通微信公众号同步?(浏览器打开)
截屏小Tip:可同时按住开机键+home键,完成截屏
腾讯云开发者社区
2018/01/10
5.1K1
如何开通微信公众号同步?(浏览器打开)
微信公众号开发之公众号
微信极速开发系列文章:http://www.jianshu.com/p/a172a1b69fdd
Javen
2018/08/21
9K0
微信公众号开发之公众号
视频号入口完全开放了,附如何申请开通微信视频号以及视频号申请流程和规则
疫情发展影响着每个人,在特殊情况下,学生延期开学,员工延期上班,医护工作人员们奋战在一线。 我们能做的是不恐慌不传谣做好个人防护,不添乱就是在做贡献了。
夏末浅笑
2020/02/01
63.8K36
视频号入口完全开放了,附如何申请开通微信视频号以及视频号申请流程和规则
微信公众号推送消息给用户?
不管是订阅号服务号,还是服务器,每天都有数量限制,重要活动优惠无法及时推送,存在限制
用户4096901
2019/03/11
3.9K0
公众号配置
地址:https://mp.weixin.qq.com(没有公众号请提前注册认证公众号)
西里国际站
2023/04/19
1.9K0
公众号配置
公众号关注/订阅事件-微信公众号开发
微信公众号开发之关注事件(订阅事件),当我们启用开发者设置后,微信本身的消息回复将无法使用,那么在用户关注我们公众号的时候就没有任何反馈了, 对用户体验是非常不友好的。下面教大家如果做关注事件,既用户关注公众号,系统给用户一个反馈。
申霖
2019/12/27
7.6K0
公众号关注/订阅事件-微信公众号开发
微信公众号爬虫 微信公众号爬虫
爬取步骤: 1. get_cookie.py用selenium登陆,获取cookie,其中你需要勾选“记住”选项,还需要微信扫描二维码,确定顺利登陆
尾尾部落
2018/09/04
7.9K0
一方法解决微信视频号视频怎么下载,视频号视频怎么保存
如果你也经常关注视频号,肯定也已经发现,视频号除了点赞、评论、收藏、转发外,并没有下载功能。
用户10294941
2023/03/02
16.6K0

相似问题

怎么开通微信公众号门店小程序开通微信买单?

0643

微信公众号被封怎么解决?

1755

微搭怎么跳转公众号文章?

1188

请问个人公众号如何开通留言和赞赏功能?

0284

请教微搭怎么跳转公众号文章?

0165
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档