目录
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会返回该设备不存在或已掉线