Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

59 wiersze
1.2 KiB

  1. import os
  2. import socket
  3. import time
  4. import random
  5. import threading
  6. import io
  7. from PIL import Image
  8. SERVER_URL = '0.0.0.0:1234'
  9. FRAME_COUNT = 5000
  10. BACKLOG = 100
  11. def routine_send_img(connection):
  12. img = Image.new(mode="RGBA", size=(10, 10))
  13. pix = img.load()
  14. for i in range(10):
  15. for j in range(10):
  16. r = random.randrange(0, 255)
  17. g = random.randrange(0, 255)
  18. b = random.randrange(0, 255)
  19. pix[i, j] = (r, g, b)
  20. output = io.BytesIO()
  21. img.save(output, format='PNG')
  22. connection.send(output.getvalue())
  23. connection.close()
  24. def main():
  25. ip, port = SERVER_URL.split(':')
  26. port = int(port)
  27. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  28. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  29. s.bind((ip, port))
  30. s.listen(BACKLOG)
  31. print(f'Listening on port {port}...')
  32. threads = list()
  33. while True:
  34. connection, addr = s.accept()
  35. #print(f'connected from {addr}...')
  36. t = threading.Thread(target=routine_send_img, args=(connection, ))
  37. threads.append(t)
  38. t.start()
  39. print(f'Sending an image to {addr}...')
  40. for t in threads:
  41. t.join()
  42. s.close()
  43. if __name__ == '__main__':
  44. main()