Я изучаю сокет, но не могу устранить ошибку в моем клиентском файле - PullRequest
0 голосов
/ 22 марта 2020

client.py

while True:
        full_msg= ""
        new_msg = True
        while True:
                msg = c.recv(15)
                if new_msg :
                        msglen = int(msg[:headersize])
                        new_msg = False   
                full_msg += msg.decode("utf-8")
                if len(full_msg)-headersize == msglen:
                                print("full msg recvd, Length = ", msglen)
                                print(full_msg[headersize:])
                                new_msg = True


Это показывает ошибку как: ValueError: недопустимый литерал для int () с основанием 10: b ''

Ответы [ 2 ]

0 голосов
/ 22 марта 2020

Вместо:

msglen = int(msg[:headersize])

попробуйте:

msglen = int(msg[:headersize].decode('utf-8'))
0 голосов
/ 22 марта 2020

Ошибка, по-видимому, возникает в этой строке (единственный callint int():

msglen = int(msg[:headersize])

Если вы проверите msg, вы увидите, что это bytes объект, а не строка. Вам нужно использовать .decode на нем.

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