server.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python
  2. import socket
  3. server_addr = ("127.0.0.1", 8080)
  4. recv_len = 1024
  5. calc_count = 3
  6. n = int(1e5)
  7. calc_list = [
  8. ("127.0.0.1", 8081),
  9. ("127.0.0.1", 8082),
  10. ("127.0.0.1", 8083)
  11. ]
  12. #Bind socket
  13. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  14. sock.bind(server_addr)
  15. print("Start server")
  16. while True:
  17. #Recv argc from Tasker
  18. a, tasker_addr = sock.recvfrom(recv_len)
  19. b, tasker_addr = sock.recvfrom(recv_len)
  20. a, b = float(a.decode()), float(b.decode())
  21. if a > b:
  22. a, b = b, a
  23. print(a, " | ", b)
  24. #Send arg part to Calculators
  25. part_len = (b - a) / calc_count
  26. b = a
  27. for i in calc_list:
  28. b += part_len
  29. sock.sendto(str(a).encode(), i)
  30. sock.sendto(str(b).encode(), i)
  31. a += part_len
  32. #Recv results from Calculators
  33. result = 0
  34. for i in calc_list:
  35. sock.sendto(str("READY").encode(), i)
  36. res_part, addr = sock.recvfrom(recv_len)
  37. result += float(res_part.decode())
  38. #Send func value to Tasker
  39. sock.sendto(str(result).encode(), tasker_addr)