0
点赞
收藏
分享

微信扫一扫

python设置remote远程桌面的问题

不会弹吉他的二郎腿 2022-04-17 阅读 52
python
  • 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

举报

相关推荐

0 条评论