Python 学习中出现如下问题的解决方式TypeError: a bytes-like object is required, not ‘str’

**

TypeError: a bytes-like object is required, not ‘str’

**

在Python 3 TCP时间戳服务器实践中出现标题所示误下面是源代码

from socket import *
from time import ctime

HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)

tcpSerSocket = socket(AF_INET,SOCK_STREAM)
tcpSerSocket.bind(ADDR)
tcpSerSocket.listen(5)

while True:
    print('Waiting for connection……')
    tcpCliSocket,addr = tcpSerSocket.accept()
    print('...connection from:',addr)

    while True:
        data = tcpCliSocket.recv(BUFSIZE)

        if not data:
            break;
       == ***tcpCliSocket.send('[%s] %s'%(bytes(ctime(),'utf-8'),data))***==

    stcpCliSocket.close()
    
tcpSerSocket.close()

这是错误提示
在这里插入图片描述
提示很明显是数据类型的错误
我们需要将数据类型修改为符合send()需要的参数类型,在源代码中我们期望将时间和data转换成一条语句但是数据类型不符合一直无法成功
在不改变返回数据结构的情况下我将

tcpCliSocket.send('[%s] %s'%(bytes(ctime(),'utf-8'),data))

修改成

tcpCliSocket.send(bytes(ctime(),'utf-8')+data)

成功运行
若有更好的方法可以评论告知!!!

你可能感兴趣的:(Python,python)