# -*- coding: utf-8 -*- import sys import time import socket from ssat_sdk.service import service_config from ssat_sdk.sat_environment import * DEVICE = { "RCU": "遥控器", "ATV": "ATV码流仪", "DTV": "DTV码流仪", "ccard": "视频采集卡", "voicecard": "音频采集卡", "signalcard": "信号仪1", "signalcard_2": "信号仪2", "ATV": "ATV码流仪", } # 异常客户端处理类; class CAbnormalClient(): # 构造函数 def __init__(self): self.port = getTesterListenTcpPort() self.ip = '127.0.0.1' self.sock = socket.socket() self.sock.settimeout(100) self.socketOpen = False # socket.setdefaulttimeout(20) self.__OpenSocket(self.ip, self.port) # 析构函数 def __def__(self): self.__CloseSocket() # 打开连接 def __OpenSocket(self, ip="127.0.0.1", port=9660): try: status = self.sock.connect((ip, self.port)) self.socketOpen = True return status != 0 except Exception, e: print e self.socketOpen = False return False # 关闭链接 def __CloseSocket(self): if self.socketOpen: self.sock.close() self.socketOpen = False else: print("\n\n\n \t\t Socket was to close.\n\n\n") # 发送消息 def __ReadData(self, message): if not self.socketOpen: self.__CloseSocket() self.__OpenSocket() if not self.socketOpen: print("\tSocket has not been opened. Call 'OpenSocket()' first.") return # Send message self.sock.send((message + '\n').encode()) received = "" # Check response. This is either a single line, e.g. "OK\n", or a multi-line response with # '{' and '}' start/end delimiters. while True: # Receives data received += self.sock.recv(64).decode() if self.__CheckEOM(received): return received # 检查是否到消息末端 def __CheckEOM(self, message): # Multi-line message if ('{' in message): return ('}' in message) # Single line message if ("\n" in message): return True def sendAbnormal(self, device, msg): if not self.socketOpen: self.__CloseSocket() self.__OpenSocket() if not self.socketOpen: print("\tSocket has not been opened. Call 'OpenSocket()' first.") return False try: message = '{"deviceName":"' + device + '","errorInfo":"' + msg + '"}' # Send message self.sock.send(message) except Exception, e: self.__CloseSocket() print e return False # 不接收返回; self.__CloseSocket() return True # 单例模块; abnormal_client = CAbnormalClient() if __name__ == "__main__": abnormal_client.sendAbnormal('RCU', '出错999995555555555559999999999999999999')