- List item
physon_remote问题
以下是连接端代码。
import struct
import socket
from PIL import ImageGrab
from cv2 import cv2
import numpy as np
import threading
baffle = 1024
host = ("0.0.0.0", 80)
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.bind(host)
soc.listen(1)
img = None
# noinspection PyShadowingNames
def handle(conn):
global img
# noinspection PyTypeChecker
img = np.asarray(ImageGrab.grab())
_, imb = cv2.imencode(".png", img)
lenb = struct.pack(">I", len(imb))
conn.sendall(lenb)
conn.sendall(imb)
while True:
cv2.waitKey(100)
gb = ImageGrab.grab()
# noinspection PyTypeChecker
imgnpn = np.asarray(gb)
subn = imgnpn - img
if (subn == 0).all():
continue
img = imgnpn
_, imb = cv2.imencode(".png", subn)
dlen = len(imb)
lenb = struct.pack(">I", dlen)
# noinspection PyBroadException
try:
conn.sendall(lenb)
conn.sendall(imb)
except:
print("连接中断...")
return
while True:
conn, addr = soc.accept()
threading.Thread(target=handle, args=(conn,)).start()
-------------------------------我是分割线-------------------------------
以下是被连接端代码
import struct
import socket
import numpy as np
from cv2 import cv2
bufsize = 1024
soc = None
host = "127.0.0.1"
port = 80
img = None
cv2.namedWindow("main")
def run():
global soc, img
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.connect((host, port))
lenb = soc.recv(4)
le = struct.unpack(">I", lenb)[0]
imb = b''
while le > bufsize:
t = soc.recv(bufsize)
imb += t
le -= len(t)
while le > 0:
t = soc.recv(le)
imb += t
le -= len(t)
data = np.frombuffer(imb, dtype=np.unit8)
img = cv2.imdecode(data, cv2.IMREAD_COLOR)
while True:
cv2.imshow("main", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
lenb = soc.recv(4)
le = struct.unpack(">I", lenb)[0]
imb = b''
while le > bufsize:
t = soc.recv(bufsize)
imb += t
le -= len(t)
while le > 0:
t = soc.recv(le)
imb += t
le -= len(t)
data = np.frombuffer(imb, dtype=np.unit8)
ims = cv2.imdecode(data, cv2.IMREAD_COLOR)
img = img + ims
cv2.waitKey(90)
run()
不知道是哪里出了问题。先打开连接端,再打开被连接端的时候,窗口界面一闪而过,显示连接中断。不知道有没有人能帮忙看看。
numpy 1.22.3
opencv-python 4.5.5.64
Pillow 9.1.0
pip 21.2.3
PyAutoGUI 0.9.53
调试环境是 paycharm 3.9