text: '''using socketer server to get data and process data.'''
  
  import socket
  import time
  from threading import Thread
  from queue import Queue
  
  
  def log(x):
      from datetime import datetime
      time_now = datetime.now().strftime("%m-%d-%H:%M:%S.%f ")
      print(time_now + x)
  
  
  class BaseSocket:
      def __init__(self, host, port, debug=False) -> None:
          # create socketer obj
          print('[Info] server start')
          serversocket = socket.socket(
              socket.AF_INET, socket.SOCK_STREAM)
          serversocket.bind((host, port))
          serversocket.listen(1)
          self.serversocket = serversocket
          self.queue = Queue()
          self.t = Thread(target=self.run)
          self.t.start()
          self.debug = debug
          self.disconnect = False
  
      @staticmethod
      def recvLine(sock):
          flag = True
          result = b''
          while not result.endswith(b'\n'):
              res = sock.recv(1)
              if not res:
                  flag = False
                  break
              result += res
          return flag, result.strip().decode('ascii')
  
      @staticmethod
      def recvAll(sock, l):
          l = int(l)
          result = b''
          while (len(result) < l):
              t = sock.recv(l - len(result))
              result += t
          return result.decode('ascii')
  
      def run(self):
          while True:
              clientsocket, addr = self.serversocket.accept()
              print("[Info] Connect: %s" % str(addr))
              self.disconnect = False
              while True:
                  flag, l = self.recvLine(clientsocket)
                  if not flag:
                      print("[Info] Disonnect: %s" % str(addr))
                      self.disconnect = True
                      break
                  data = self.recvAll(clientsocket, l)
                  if self.debug: log('[Info] Recv data')
                  self.queue.put(data)
              clientsocket.close()
  
      def update(self):
          time.sleep(1)
          while not self.queue.empty():
              log('update')
              data = self.queue.get()
              self.main(data)
  
      def main(self, datas):
          print(datas)
  
      def __del__(self):
          self.serversocket.close()
          self.t.join()
  
  
  