flask通过tcp链接和4g模块与设备通信

目录

Tcp Server

一、tcp server配置

二、创建新py文件,给flask当接口用

Flask

一、Flask打开TCPserver

二、前端(移动端或者网页端)发送消息调用的接口


Tcp Server

一、tcp server配置

import socket
import sys
import threading



sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)



class TCPConnect:
    def __init__(self):
        self.client_sockets = []

    def start_tcp_server(self, ip, port):
        # 创建服务器''

        server_address = (ip, port)
        # 绑定接口
        print('starting listen on ip %s, port %s' % server_address)
        sock.bind(server_address)
        try:
            sock.listen(1024)
        except socket.error as e:
            print("fail to listen on port %s" % e)
            sys.exit(1)
        while True:
            print("waiting for connection")
            client, addr = sock.accept()
            self.client_sockets.append(client)
            print(self.client_sockets)

            print("having a connection")
            threading.Thread(target=self.sock_threading, args=(client, addr)).start()

    def sock_threading(self, client, addr):
        while True:
            print("\r\n")
            try:
                msg = client.recv(16384)
                print(msg)
            except Exception as e:
                print(e)
                client.close()
                return
            msg_de = msg.decode('utf-8')
            # 当接收消息为disconnect时断开链接,这里可以根据自己需求修改
            if str(msg_de).strip() == 'disconnect' or str(msg).strip() == "disconnect": break

二、创建新py文件,给flask当接口用

from tcpsever.Tcp_server_init import TCPConnect

tcpsever = TCPConnect()


def main():
    print("服务成功启动")
    print(tcpsever)
    tcpsever.start_tcp_server(ip='0.0.0.0', port=20003)


def msg_send(msg):
    b = []
    for i in msg:
        a = ord(i)
        b.append(a)
    print(tcpsever.client_sockets)
    hex(ord(b))
    try:
        tcpsever.client_sockets[0].send(msg.encode('utf-8'))
        return "success"
    except:
        return "该设备已掉线或不存在"

Flask

一、Flask打开TCPserver

flask里面新建一个接口,为了在flask里面调用TCPserver的main()打开socket服务和设备通信

@app.route("/")
def open_Tcp():
    """线程打开tcp服务"""
    threading.Thread(target=main).start()
    # msg_send(msg="aaa")
    return output(msg="启动成功",code=200)

二、前端(移动端或者网页端)发送消息调用的接口

@account_app.route("/ping")
def send_msg_TCP():
    """发送消息给设备"""
    msg = request.args.get("msg") # 获取前端的消息
    msg = msg_send(msg)
    return output(msg= msg,code=200) # 若设备掉线则msg会返回该设备不存在或已掉线

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小周bb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值