import os import socket import time import random import threading import io from PIL import Image SERVER_URL = '0.0.0.0:1234' FRAME_COUNT = 5000 BACKLOG = 100 def routine_send_img(connection): img = Image.new(mode="RGBA", size=(10, 10)) pix = img.load() for i in range(10): for j in range(10): r = random.randrange(0, 255) g = random.randrange(0, 255) b = random.randrange(0, 255) pix[i, j] = (r, g, b) output = io.BytesIO() img.save(output, format='PNG') connection.send(output.getvalue()) connection.close() def main(): ip, port = SERVER_URL.split(':') port = int(port) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((ip, port)) s.listen(BACKLOG) print(f'Listening on port {port}...') threads = list() while True: connection, addr = s.accept() #print(f'connected from {addr}...') t = threading.Thread(target=routine_send_img, args=(connection, )) threads.append(t) t.start() print(f'Sending an image to {addr}...') for t in threads: t.join() s.close() if __name__ == '__main__': main()