Как отправить вещи, которые не являются строками с сокетами?Например, сделать снимок экрана с клиентом и отправить его на сервер - PullRequest
0 голосов
/ 03 апреля 2019

Часть моего клиента

    agreement_ac = s.recv(4096)
    b = bytes("take a screenshot".encode())
    if b in agreement_ac:
        image = ImageGrab.grab()

Часть моего сервера:

while True:
    c, addr = s.accept()
    cmd_test = input(">>> ")
    if cmd_test == "test":
        c.send("take a screenshot".encode())

Итак, в настоящее время мое приложение работает так, что когда я запускаю сервер и клиент подключается, еслиЯ набираю «сделать снимок экрана», затем эта строка будет отправлена ​​клиенту, клиент расшифрует ее, чтобы понять, что он должен делать, и затем он сделает снимок экрана, который он делает, и отправит его.Я не понимаю, как я могу отправить его на сервер и сохранить его на устройстве сервера.Например, клиент делает снимок экрана и отправляет его на сервер, а сервер сохраняет его на рабочем столе сервера.

1 Ответ

1 голос
/ 03 апреля 2019

Код сервера:

import socket               
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)         
print ("Socket successfully created")
port = 12345               
s.bind(('', port))        
print ("socket binded to %s" %(port))
s.listen(5)     
print ("socket is listening")

while True:
    c, addr = s.accept()
    cmd_test = input(">>> ")
    if cmd_test == "test":
        c.send("take a screenshot".encode())
    temp = c.recv(9000000)
    with open('imgs.png','wb') as f:

        #print(temp)
        f.write(temp)

    c.close()

код клиента:

import socket
import pyscreenshot as ImageGrab
b="take a screenshot"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)         
port = 12345               
s.connect(('127.0.0.1', port))
#s.sendall(str.encode(b))



agreement_ac = str(s.recv(9000000))
#print(agreement_ac)
if b in agreement_ac:
        image = ImageGrab.grab()
        ImageGrab.grab_to_file('im.png')
        with open('im.png','rb') as f:
            imgsend = f.read()
        s.sendall(imgsend)

#print(image)
s.close()

Это сохранит файл на сервере как 'imgs.png'. Измените размер байта в соответствии с вашими потребностями.
Примите, если работаете:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...