Files
JustTwirk/receiver.py
2025-08-25 19:37:48 +02:00

63 lines
1.3 KiB
Python

import socket
import struct
import numpy as np
import cv2
import time
HOST = '0.0.0.0'
PORT = 9999
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((HOST, PORT))
sock.listen(1)
conn, addr = sock.accept()
print(f"Connected by {addr}")
total_bytes_received = 0
start_time = time.time()
def recvall(sock, n):
data = b''
while len(data) < n:
packet = sock.recv(n - len(data))
if not packet:
return None
data += packet
return data
try:
while True:
# Odbiór długości
packed_len = recvall(conn, 4)
if not packed_len:
break
length = struct.unpack('!I', packed_len)[0]
# Odbiór danych
data = recvall(conn, length)
if not data:
break
total_bytes_received += length
# Dekodowanie JPEG
img_array = np.frombuffer(data, dtype=np.uint8)
frame = cv2.imdecode(img_array, cv2.IMREAD_COLOR)
cv2.imshow("Stream", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
elapsed = time.time() - start_time
if elapsed >= 1.0:
print(f"Download speed: {total_bytes_received * 8 / 1e6:.2f} Mbps")
total_bytes_received = 0
start_time = time.time()
finally:
conn.close()
sock.close()
cv2.destroyAllWindows()