server.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python3
  2. import socket
  3. import myutil
  4. from multiprocessing import Process
  5. def handle_data(data):
  6. print(data)
  7. if data == "SLEEP":
  8. # myutil.suspend()
  9. pass
  10. def listen_udp():
  11. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  12. sock.bind(('', 9))
  13. while True:
  14. msg, _ = sock.recvfrom(1024)
  15. res = myutil.parse_magic_packet(msg)
  16. handle_data(res)
  17. def listen_tcp():
  18. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  19. sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  20. sock.bind(('0.0.0.0', 7777))
  21. sock.listen(1)
  22. while True:
  23. conn, _ = sock.accept()
  24. data = conn.recv(4096)
  25. if not data:
  26. continue
  27. data = data.decode("utf-8").split("\r\n")
  28. path = data[0].split(" ")[1].lstrip("/")
  29. conn.send(b"HTTP/1.1 200 OK\n\n\n")
  30. conn.close()
  31. handle_data(path)
  32. if __name__ == '__main__':
  33. p = Process(target=listen_udp)
  34. p.start()
  35. q = Process(target=listen_tcp)
  36. q.start()
  37. p.join()
  38. q.join()