Advertisement
Gabriele91

Python debug thread

Nov 26th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.22 KB | None | 0 0
  1.  
  2. import types
  3. import threading
  4. import socket
  5. import struct
  6. import os
  7.  
  8. class DebugThread(threading.Thread):
  9.  
  10.     def __init__(self, host):
  11.         threading.Thread.__init__(self)
  12.         self.m_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  13.         self.m_socket.setblocking(0)
  14.         self.m_loop = True
  15.         self.m_server_addrs = (host, 6540) #port = 6540, defined in DENNOp
  16.         self.m_msg_type_int = 0
  17.         self.m_msg_type_float = 1
  18.         self.m_msg_type_double = 2
  19.         self.m_msg_type_string = 3
  20.  
  21.     def run(self):
  22.         #try to connect
  23.         if not self.connection():
  24.             return
  25.         #read message
  26.         while self.m_loop:
  27.             #read
  28.             value = self.read_messages()
  29.             #bad case
  30.             if value is False:
  31.                 break
  32.         #close connection
  33.         self.m_socket.shutdown()
  34.         self.m_socket.close()
  35.  
  36.     def connection(self):
  37.         while self.m_loop:
  38.             err = self.m_socket.connect_ex(self.m_server_addrs)
  39.             if err == 0:
  40.                 return True
  41.         return False
  42.  
  43.     def read_messages(self):
  44.         #read type
  45.         data = self.m_socket.recv(4)
  46.         #if type arrived
  47.         if data != None:
  48.             #data type
  49.             type_of_data = int.from_bytes(bytearray(data), byteorder='little')
  50.             #types
  51.             if type_of_data == self.m_msg_type_int:
  52.                 int_data = struct.unpack('<i', bytearray(self.m_socket.recv(4)))
  53.                 return int_data
  54.             elif type_of_data == self.m_msg_type_float:
  55.                 float_data = struct.unpack('<f', bytearray(self.m_socket.recv(4)))
  56.                 return float_data
  57.             elif type_of_data == self.m_msg_type_double:
  58.                 double_data = struct.unpack('<d', bytearray(self.m_socket.recv(4)))
  59.                 return double_data
  60.             elif type_of_data == self.m_msg_type_string:
  61.                 len_data = struct.unpack('<i', bytearray(self.m_socket.recv(4)))
  62.                 str_data = bytearray(self.m_socket.recv(len_data)).decode("utf-8")
  63.                 return str_data
  64.             else:
  65.                 return False
  66.         else:
  67.             return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement