Модуль json видает ошибку

server.py

import json
import socket
import base64
import threading

TCP_SIZE = 2048

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 55000))
sock.listen()

def handle(client, address):
    SCREENSHOT = b""
    SCREENRANGECOUNT = 0
    
    while True:
        data = client.recv(TCP_SIZE).decode("utf-8")
        print(data)
        data = json.loads(data)
        operation = data["operation"]
        
        print(data, operation)
        if operation == "screenshotInfo":
            SCREENRANGECOUNT = data["data"]
        elif operation == "screenshotData":
            SCREENSHOT = SCREENSHOT + base64.b64decode(data["data"].encode("utf-8"))
            SCREENRANGECOUNT -= 1
            if SCREENRANGECOUNT == 0:
                with open("image.png", 'wb') as img:
                    img.write(SCREENSHOT)
        

def main():
    print('Server is running, please, press ctrl+c to stop')
    while True:
        client, address = sock.accept()
        print("Connected with {}".format(str(address)))
        
        thread = threading.Thread(target=handle, args=(client, address))
        thread.start()
        
if __name__ == "__main__":
    main()

client.py

import io
import json
import socket
import base64
import pyautogui


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 55000))

for x in range(1):
    screen = io.BytesIO()
    myscreen = pyautogui.screenshot()
    myscreen.save(screen, "PNG")
    contents = screen.getvalue()
    
    imageList = [contents[n:n+1048] for n in range(0, len(contents), 1048)]
    data = {"operation": "screenshotInfo",
            "data": len(imageList)}
    sock.send(json.dumps(data).encode("utf-8"))
    
    for x in imageList:
        data = {"operation": "screenshotData", "data": base64.b64encode(x).decode("utf-8")}
        sock.send(json.dumps(data).encode("utf-8"))
sock.close()

Ошибка:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\threading.py", line 980, in _bootstrap_inner
    self.run()
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\threading.py", line 917, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Maxim\PycharmProjects\test\server.py", line 19, in handle
    data = json.loads(data)
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Maxim\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 1444 (char 1443)

Process finished with exit code -1

Ответы (0 шт):