socket.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import socket
  2. import threading
  3. import config as cfg
  4. from Utils import *
  5. LenFunc = cfg.LenFunc
  6. class SocketHTTP(threading.Thread):
  7. def __init__(self, HOST, PORT, parent):
  8. try:
  9. self.parent = parent
  10. super(SocketHTTP, self).__init__(None, None, None, None)
  11. self.port = PORT
  12. self.Host = HOST
  13. self.history = []
  14. self.socket = socket.socket()
  15. self.socket.connect((HOST, PORT))
  16. t = threading.Thread(target=self.receive)
  17. t.start()
  18. gBackPrint(
  19. "socket is created and Listener is created", (HOST, PORT))
  20. except Exception as e:
  21. rBackPrint("An exception occurred SocketHTTP __init__", e)
  22. def close(self):
  23. try:
  24. self.socket.close()
  25. vPrint("SocketHTTP", " CLOSED")
  26. except Exception as e:
  27. rBackPrint("An exception occurred SocketHTTP close", e)
  28. def send(self, M):
  29. try:
  30. self.socket.sendall(M)
  31. self.history.append(("send", M))
  32. vPrint("SocketHTTP Send", M)
  33. except Exception as e:
  34. rBackPrint("An exception occurred SocketHTTP send", e)
  35. def receive(self):
  36. try:
  37. while True:
  38. data = self.socket.recv(65565)
  39. bPrint("receive", data)
  40. if bytes.hex(data) == b"":
  41. self.close
  42. break
  43. self.parent.recv(bytes.hex(data))
  44. except Exception as e:
  45. rBackPrint("An exception occurred SocketHTTP receive", e)
  46. class SocketClient(threading.Thread):
  47. def __init__(self, HOST, PORT, parser, id):
  48. try:
  49. self.parser = parser
  50. super(SocketClient, self).__init__(None, None, None, None)
  51. self.port = PORT
  52. self.Host = HOST
  53. self.history = []
  54. self.id = id
  55. self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  56. self.socket.connect((HOST, PORT))
  57. t = threading.Thread(target=self.receive)
  58. t.start()
  59. gPrint("socket is created", " Listener is created")
  60. except Exception as e:
  61. rBackPrint("An exception occurred SocketClient __init__", e)
  62. def send(self, M):
  63. try:
  64. Message = bytes(M, "utf-8")
  65. vPrint("Befor sendSocketHTTP Send", Message)
  66. self.socket.sendall(Message)
  67. # self.history.append(("send", Message))
  68. vPrint("SocketHTTP Send", M)
  69. except Exception as e:
  70. rBackPrint("An exception occurred SocketClient send", e)
  71. def receive(self):
  72. try:
  73. while True:
  74. len = self.socket.recv(cfg.LenFunc)
  75. if not len:
  76. break
  77. data = self.socket.recv(int(len.decode("utf-8")))
  78. data = self.parser.toJSON(data.decode("utf-8"))
  79. bPrint("receive", data)
  80. self.parser.parser(data, None, self)
  81. except Exception as e:
  82. rBackPrint("An exception occurred SocketClient receive", e)
  83. class SocketServer:
  84. def __init__(self, socketPort, parser, id):
  85. try:
  86. self.parser = parser
  87. self.history = []
  88. self.connected = []
  89. self.socketPort = socketPort
  90. self.id = id
  91. t = threading.Thread(target=self.connection)
  92. t.start()
  93. gPrint("socket is created and Listener is created", socketPort)
  94. except Exception as e:
  95. rBackPrint("An exception occurred SocketServer __init__", e)
  96. def connection(self):
  97. try:
  98. with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  99. s.bind(("localhost", self.socketPort))
  100. s.listen()
  101. self.socket = s
  102. while True:
  103. conn, addr = self.socket.accept()
  104. print("user connected to ", conn, "-> ", addr)
  105. u = Connection(
  106. conn, addr, self.socketPort + 1, self.parser)
  107. self.connected.append(u)
  108. except Exception as e:
  109. rBackPrint("An exception occurred SocketServer connection", e)
  110. class Connection:
  111. def __init__(self, connection, address, oracleSocketPort, parser):
  112. try:
  113. self.parser = parser
  114. self.socket = connection
  115. self.addr = address
  116. self.history = []
  117. self.type = None
  118. self.oracleSocketPort = oracleSocketPort
  119. t = threading.Thread(target=self.receive)
  120. t.start()
  121. except Exception as e:
  122. rBackPrint("An exception occurred Connection __init__", e)
  123. def send(self, M):
  124. try:
  125. Message = bytes(M, "utf-8")
  126. self.socket.sendall(Message)
  127. self.history.append(("send", Message))
  128. vPrint("Connection Send", M)
  129. except Exception as e:
  130. rBackPrint("An exception occurred Connection send", e)
  131. def receive(self):
  132. try:
  133. while True:
  134. len = self.socket.recv(cfg.LenFunc)
  135. if not len:
  136. break
  137. data = self.socket.recv(int(len.decode("utf-8")))
  138. data = self.parser.toJSON(data.decode("utf-8"))
  139. bPrint("Connection receive", data)
  140. self.parser.parser(data, None, self)
  141. except Exception as e:
  142. rBackPrint("An exception occurred Connection receive", e)