1def recv_msg(clientsocket):
2 while True:
3 # 接受客户端消息,设置一次最多接受10240字节的数据
4 recv_msg = clientsocket.recv(102400)
5 # 把接收到的东西解码
6 msg = np.fromstring(recv_msg, np.uint8)
7 img_decode = cv2.imdecode(msg, cv2.IMREAD_COLOR)
8 try:
9 s=img_decode.shape
10 img_decode=img_decode
11 temp=img_decode
12 except:
13 img_decode=temp
14 pass
15 cv2.imshow(‘SERVER’, img_decode)
16 cv2.setMouseCallback(“SERVER”, mouse_click)
17 try:
18 f=open(“1.txt”)
19 txt=f.read()
20 f.close()
21 reply=txt
22 print(reply)
23 clientsocket.send(reply.encode(‘utf-8’))
24 os.remove(“1.txt”)
25 except:
26 pass
27 if cv2.waitKey(1) & 0xFF == ord(‘q’):
28 break
(4)主函数,用来建立连接和数据接收等功能。
1def main():
2 socket_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
3 host=‘服务器的本地ip’
4 #设置被监听的端口号,小于1024的端口号不能使用
5 port=设置的端口
6 socket_server.bind((host,port))
7 #设置最大监听数,也就是最多可以同时响应几个客户端请求,一般配合多线程使用
8 socket_server.listen(5)
9 #等待客户端连接,一旦有了连接就立刻向下执行,否则等待
10 #accept()函数会返回一个元组,第一个元素是客户端socket对象,第二个元素是客户端地址(ip地址+端口号)
11 clientsocket,addr=socket_server.accept()
12 # 有了客户端连接后之后才能执行以下代码,我们先向客户端发送连接成功消息
13 clientsocket.send(‘连接成功’.encode(‘utf-8’))
14 # 和客户端一样开启一个线程接受客户端的信息
15 t=threading.Thread(target=recv_msg,args=(clientsocket,))
16 t.start()
02
远程控制GUI窗口
远控桌面GUI主要是为了美观而用,需要大家根据远程代码进行集合修改。当然单独使用上述代码已经可以实现功能了,只是不够美观。由于考虑到此处代码量较大,且不是重点,故粗略讲解(1)导入相关库:
1from PyQt5.QtWidgets import *
2from PyQt5.QtCore import *