- 监测数据采集物联网应用开发步骤(9.1)
TCP/IP Server开发
新建TCP/IP Server线程类com.zxy.tcp.ServerThread.py
#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''import socket,threading,time
from com.zxy.tcp.TcpServer import TcpServer
from com.zxy.z_debug import z_debug#监测数据采集物联网应用--TCP/IP Server线程
class ServerThread(z_debug):attDtTimeOut = 60attInput = ""attNum = ""attPort = 0attThreadSize = 500def __init__(self, temInput, temNum, temPort):self.attInput = temInputself.attNum = temNumself.attPort = temPortdef run(self):global dServThreadList try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('0.0.0.0', self.attPort))s.listen(self.attThreadSize) while True:try:sock, addr = s.accept()ckeys = sock.getpeername()[0] + '|' + str(sock.getpeername()[1]) ts = TcpServer(ckeys)t = threading.Thread(target=ts.server_link, args=(sock, addr), name="ServerClient" + ckeys)t.start()except Exception as en:if str(type(self)) == "<class 'type'>":self.debug_in(self,repr(en)+"=>"+str(en.__traceback__.tb_lineno))#打印异常信息else:self.debug_in(repr(en)+"=>"+str(en.__traceback__.tb_lineno))#打印异常信息finally:time.sleep(0.1)except Exception as e: if str(type(self)) == "<class 'type'>":self.debug_in(self,repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息else:self.debug_in(repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息Pass
新建作为TCP Server接收数据拦截器插件类com.plugins.usereflect.testServerReflectInClass1.py
#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''
from com.zxy.z_debug import z_debug#监测数据采集物联网应用--作为TCP Server接收数据拦截器插件,可做设备反控操作程序
class testServerReflectInClass1(z_debug):#接收到数据strResult = ""#需要发送到客户端数据strSend = ""#是否继续执行 1:继续执行 0:中断执行strContinue = "1" #所连接的远端IPstrIP = ""#端口号 strPort = ""def __init__(self, params):passdef init_start(self):#作为服务端接收数据拦截器if self.strResult == "001":self.strSend = "#send to client data:client"print("AAAA作为服务端接收数据拦截器:"+self.strResult)self.strResult = "ok"
新建作为TCP Server接收数据拦截器插件类com.plugins.usereflect.testServerReflectInClass2.py
#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''
from com.zxy.z_debug import z_debug#监测数据采集物联网应用--作为TCP Server接收数据拦截器插件,可做设备反控操作程序
class testServerReflectInClass2(z_debug):#接收到数据strResult = ""#需要发送到客户端数据strSend = ""#是否继续执行 1:继续执行 0:中断执行strContinue = "1" #所连接的远端IPstrIP = ""#端口号 strPort = ""def __init__(self, params):passdef init_start(self):#作为服务端接收数据拦截器if self.strResult == "002":self.strSend = "#send to client data:client"print("BBB作为服务端接收数据拦截器:"+self.strResult)self.strResult = "ok"
在com.zxy.main.Init_Page.py中添加代码
from com.zxy.tcp.ServerThread import ServerThread@staticmethoddef Start_Server():st = ServerThread("", "", int(Com_Para.AccSocketPort))# TCP服务端案例t2 = threading.Thread(target=st.run, name="ServerMainThread")t2.start()
TCP Server测试案例MonitorDataCmd.py主文件中编写:
在 if __name__ == '__main__':下添加
#TCP Server接收数据拦截器插件Com_Para.ServerREFLECT_IN_CLASS = "com.plugins.usereflect.testServerReflectInClass1"#TCP Server配置端口参数 Com_Para.AccSocketPort = "8099"#TCP/IP Server初始化Init_Page.Start_Server()#暂停120秒,等待client连接time.sleep(120)#遍历已经连接到本设备的tcp client并发送数据包for key in Com_Para.dServThreadList.keys():temSck = Com_Fun.GetHashTableNone(Com_Para.dServThreadList, key)temValue = "Server往Client端发送数据包:"+Com_Fun.GetTimeDef()Com_Fun.SendSocket(temValue, temSck)print("=>"+key+"=>"+temValue)
运行测试结果如下图:
监测数据采集物联网应用开发步骤(10)