socket_thread.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import socket
  2. import _thread
  3. import random
  4. import time
  5. test_finished = False
  6. server_started = False
  7. def socket_server_task(host, port):
  8. """
  9. socket 服务器任务
  10. :return:
  11. """
  12. print("socket server start:", host, port)
  13. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  14. s.bind((host, port))
  15. s.listen(5)
  16. print("socket server waiting accept")
  17. global server_started
  18. server_started = True
  19. accept, addr = s.accept()
  20. print("socket server accepted at", addr)
  21. while True:
  22. try:
  23. data = accept.recv(1024)
  24. print('socket server recv:', data.decode())
  25. accept.send(data)
  26. except Exception:
  27. print('socket server closing accept')
  28. accept.close()
  29. break
  30. print("socket server closing")
  31. s.close()
  32. global test_finished
  33. test_finished = True
  34. def socket_server_init(host='0.0.0.0', port=36500):
  35. _thread.start_new_thread(socket_server_task, (host, port))
  36. def socket_client_task(host, port):
  37. print("socket client start:", host, port)
  38. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  39. client.connect((host, port))
  40. client.send("hello".encode())
  41. recv = client.recv(1024).decode()
  42. print("client recv:", recv)
  43. client.close()
  44. def socket_server_test(host='0.0.0.0', port=36500):
  45. _thread.start_new_thread(socket_client_task, (host, port))
  46. test_port = random.randint(10000, 65535)
  47. socket_server_init(port=test_port)
  48. while not server_started:
  49. time.sleep(0.1)
  50. socket_server_test(port=test_port)
  51. while not test_finished:
  52. time.sleep(0.1)