EOL при сканировании строкового литерала [в python сокетов] - PullRequest
1 голос
/ 01 августа 2020

Я новичок ie, и это мой первый вопрос по stackoverflow, поэтому с учетом сказанного, вот мой вопрос

КОД КЛИЕНТА

import socket

cs = socket.socket()
ADDR = ('192.168.29.139',9999)
cs.connect(ADDR)

l = int(cs.recv(2048).decode())
data = cs.recv(l).decode()

data = eval(data)
cont = data["file"]["cont"]

f = open(data['file']['name'] + data['file']['ext'], "wb")
f.write(cont)
f.close()

КОД СЕРВЕРА

## SERVER SIDE


import socket

ss = socket.socket()
ADDR = ('192.168.29.139',9999)
ss.bind(ADDR)
ss.listen()

conn, addr = ss.accept()

msg = input("Enter message: ")
filepath = input("Enter filepath: ")
fileName = input("Enter filename : ")
fileExt = input("Enter fileExt:" )

f = open(filepath,"rb")
r = f.read()
f.close()
fileDict = {"name": fileName, "ext": fileExt, "cont": r}

msg_dict = {"msg":msg, "file": fileDict}
msg_dict = str(msg_dict).encode()

conn.send(str(len(msg_dict)).encode())
conn.send(msg_dict)

Этот метод отлично работает, когда я передаю файлы на одном компьютере (даже файлы большего размера, например несколько ГБ, в этом тесте я использовал windows 7 тестового видео, размером около 25 МБ), но когда я использую его в локальной сети для передачи одного и того же файла, между двумя компьютерами в одной сети отображается ошибка

прямо во время этого оператора

data = eval(data)

ошибка заключалась в том, что после печати такого количества строк символов, как \ xo ... и пустых строк

EOL while scanning string literal         ^

использование pickle также дало ошибку

Спасибо за чтение ... ПОМОГИТЕ!

...