48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
import socket
|
|
import cv2
|
|
import numpy as np
|
|
import struct
|
|
|
|
HOST = "0.0.0.0" # nasłuchuj na wszystkich interfejsach
|
|
PORT = 9999
|
|
|
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
server_socket.bind((HOST, PORT))
|
|
server_socket.listen(1)
|
|
|
|
print("Serwer nasłuchuje na port", PORT)
|
|
conn, addr = server_socket.accept()
|
|
print("Połączono z:", addr)
|
|
|
|
data = b""
|
|
payload_size = struct.calcsize("Q") # 8 bajtów na długość ramki
|
|
|
|
while True:
|
|
while len(data) < payload_size:
|
|
packet = conn.recv(4096)
|
|
if not packet:
|
|
break
|
|
data += packet
|
|
if not data:
|
|
break
|
|
|
|
packed_msg_size = data[:payload_size]
|
|
data = data[payload_size:]
|
|
msg_size = struct.unpack("Q", packed_msg_size)[0]
|
|
|
|
while len(data) < msg_size:
|
|
data += conn.recv(4096)
|
|
|
|
frame_data = data[:msg_size]
|
|
data = data[msg_size:]
|
|
|
|
frame = np.frombuffer(frame_data, dtype=np.uint8)
|
|
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
|
|
|
|
cv2.imshow("Odebrany obraz", frame)
|
|
if cv2.waitKey(1) & 0xFF == ord('q'):
|
|
break
|
|
|
|
conn.close()
|
|
server_socket.close()
|
|
cv2.destroyAllWindows() |