栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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("rn")
            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会返回该设备不存在或已掉线

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034842.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号