1. 原理
py的socket库是个高度抽象的网络链接库,而且原装自带,不需要安装,使用他你只需要把socket当成插座,你插入这一头,然后双手合十指望他能连接到另一头,一般情况下都是能连接成功的,当然前提是你了解了用什么协议,对方开了什么端口。
2. 代码
服务 端:
import socket
from cv2 import cv2
import numpy as np
from PIL import ImageGrab
server = socket.socket()
server.bind(('192.168.249.18',1179))
print('[+] {host} is ready!'.format(host=server.getsockname()))
server.listen(5)
conn,add = server.accept()
print('[+] {connadd} connected!'.format(connadd=add))
while True:
data = ImageGrab.grab(bbox=(50,50,800,600))
data = np.array(data)
data = data[:,:,1]
text = data.dumps()
conn.send(text)
server.close()
客户端:
import socket
import numpy as np
from cv2 import cv2
client = socket.socket()
client.connect(("192.168.249.18",1179))
print("[+] connected!")
while True:
text = client.recv(10240000000)
try:
data = np.loads(text)
cv2.imshow('1',data)
if cv2.waitKey(50) == 27:break
except:pass
client.close()
3. 效果
左边的台式机是实验机,右边的笔记展示了试验机的即时桌面。
需要改进的地方:
. 流媒体传输十分卡,所以最好转换成黑白的减少数据量。
. socket库对流的处理不清晰,似乎总是把流当成一整块传输。
. 最好改成静默程序,运行时不会对台式机产生影响。
网友评论