TCPServer.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import socket
  2. import _thread
  3. class TCPServer(socket.socket):
  4. clients = []
  5. def __init__(self):
  6. socket.socket.__init__(self)
  7. self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  8. self.bind(('0.0.0.0', 8765))
  9. self.listen(5)
  10. def run(self):
  11. print("Starting TCP Server")
  12. try:
  13. self.accept_clients()
  14. except Exception as ex:
  15. print(ex)
  16. finally:
  17. print("Server shutdown")
  18. for client in self.clients:
  19. client.close()
  20. self.close()
  21. def accept_clients(self):
  22. while True:
  23. (client_socket, address) = self.accept()
  24. self.clients.append(client_socket)
  25. self.on_open(client_socket)
  26. _thread.start_new_thread(self.receive, (client_socket,))
  27. def receive(self, client):
  28. while True:
  29. data = client.recv(1024)
  30. if data == '':
  31. break
  32. self.on_message(client, data)
  33. self.clients.remove(client)
  34. self.on_close(client)
  35. client.close()
  36. _thread.exit()
  37. def on_open(self, client):
  38. pass
  39. def on_message(self, client, message):
  40. pass
  41. def on_close(self, client):
  42. pass