socket_json.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import socket
  2. import _thread
  3. import random
  4. import time
  5. import json
  6. test_finished = False
  7. server_started = False
  8. test_data = {
  9. 'result': {
  10. 'a_a': {
  11. 'value': 0.290000, 'desc': 'A 相电流'
  12. }
  13. }, 'code': 0
  14. }
  15. def socket_server_task(host, port):
  16. """
  17. socket 服务器任务
  18. :return:
  19. """
  20. print("socket server start:", host, port)
  21. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  22. s.bind((host, port))
  23. s.listen(5)
  24. global server_started
  25. server_started = True
  26. while True:
  27. try:
  28. print("socket server waiting accept")
  29. accept, addr = s.accept()
  30. print("socket server accepted at", addr)
  31. while True:
  32. data = accept.recv(1024)
  33. print('socket server recv:', data.decode())
  34. # accept.send(data)
  35. accept.send(json.dumps(test_data))
  36. except Exception:
  37. print('socket server closing accept')
  38. accept.close()
  39. break
  40. print("socket server closing")
  41. s.close()
  42. global test_finished
  43. test_finished = True
  44. def socket_server_init(host='0.0.0.0', port=36500):
  45. _thread.start_new_thread(socket_server_task, (host, port))
  46. def socket_client_task(host, port):
  47. print("socket client start:", host, port)
  48. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  49. client.connect((host, port))
  50. for i in range(2):
  51. client.send("hello".encode())
  52. recv = client.recv(1024).decode()
  53. print("client recv:", recv)
  54. client.close()
  55. def socket_server_test(host='0.0.0.0', port=36500):
  56. _thread.start_new_thread(socket_client_task, (host, port))
  57. test_port = random.randint(10000, 65535)
  58. socket_server_init(port=test_port)
  59. while not server_started:
  60. time.sleep(0.1)
  61. socket_server_test(port=test_port)
  62. while not test_finished:
  63. time.sleep(0.1)