AbnormalClient.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import time
  4. import socket
  5. from ssat_sdk.service import service_config
  6. from ssat_sdk.sat_environment import *
  7. DEVICE = {
  8. "RCU": "遥控器",
  9. "ATV": "ATV码流仪",
  10. "DTV": "DTV码流仪",
  11. "ccard": "视频采集卡",
  12. "voicecard": "音频采集卡",
  13. "signalcard": "信号仪1",
  14. "signalcard_2": "信号仪2",
  15. "ATV": "ATV码流仪",
  16. }
  17. # 异常客户端处理类;
  18. class CAbnormalClient():
  19. # 构造函数
  20. def __init__(self):
  21. self.port = getTesterListenTcpPort()
  22. self.ip = '127.0.0.1'
  23. self.sock = socket.socket()
  24. self.sock.settimeout(100)
  25. self.socketOpen = False
  26. # socket.setdefaulttimeout(20)
  27. self.__OpenSocket(self.ip, self.port)
  28. # 析构函数
  29. def __def__(self):
  30. self.__CloseSocket()
  31. # 打开连接
  32. def __OpenSocket(self, ip="127.0.0.1", port=9660):
  33. try:
  34. status = self.sock.connect((ip, self.port))
  35. self.socketOpen = True
  36. return status != 0
  37. except Exception, e:
  38. print e
  39. self.socketOpen = False
  40. return False
  41. # 关闭链接
  42. def __CloseSocket(self):
  43. if self.socketOpen:
  44. self.sock.close()
  45. self.socketOpen = False
  46. else:
  47. print("\n\n\n \t\t Socket was to close.\n\n\n")
  48. # 发送消息
  49. def __ReadData(self, message):
  50. if not self.socketOpen:
  51. self.__CloseSocket()
  52. self.__OpenSocket()
  53. if not self.socketOpen:
  54. print("\tSocket has not been opened. Call 'OpenSocket()' first.")
  55. return
  56. # Send message
  57. self.sock.send((message + '\n').encode())
  58. received = ""
  59. # Check response. This is either a single line, e.g. "OK\n", or a multi-line response with
  60. # '{' and '}' start/end delimiters.
  61. while True:
  62. # Receives data
  63. received += self.sock.recv(64).decode()
  64. if self.__CheckEOM(received):
  65. return received
  66. # 检查是否到消息末端
  67. def __CheckEOM(self, message):
  68. # Multi-line message
  69. if ('{' in message):
  70. return ('}' in message)
  71. # Single line message
  72. if ("\n" in message):
  73. return True
  74. def sendAbnormal(self, device, msg):
  75. if not self.socketOpen:
  76. self.__CloseSocket()
  77. self.__OpenSocket()
  78. if not self.socketOpen:
  79. print("\tSocket has not been opened. Call 'OpenSocket()' first.")
  80. return False
  81. try:
  82. message = '{"deviceName":"' + device + '","errorInfo":"' + msg + '"}'
  83. # Send message
  84. self.sock.send(message)
  85. except Exception, e:
  86. self.__CloseSocket()
  87. print e
  88. return False
  89. # 不接收返回;
  90. self.__CloseSocket()
  91. return True
  92. # 单例模块;
  93. abnormal_client = CAbnormalClient()
  94. if __name__ == "__main__":
  95. abnormal_client.sendAbnormal('RCU', '出错999995555555555559999999999999999999')