gpt4 book ai didi

python - TypeError : a bytes-like object is required, 不是 'str'

转载 作者:可可西里 更新时间:2023-11-01 02:55:33 26 4
gpt4 key购买 nike

我正在尝试制作一个客户端-服务器模型,作为 python 网络编程的新手,我遇到了一个错误,该错误指出以下内容:-

tcpCliSoc.send('[%s] %s' % (bytes(ctime(), 'utf_8'), data)) TypeError: a bytes-like object is required, not 'str'

这是服务端和客户端的实现

TCP 服务器实现

from socket import *  
from time import ctime

HOST = ''
PORT = 21572
ADDR = (HOST, PORT)
BUFFSIZE = 1024

tcpSerSoc = socket(AF_INET, SOCK_STREAM)

tcpSerSoc.bind(ADDR)
tcpSerSoc.listen(5)

while True:
print("waiting for connection......")
tcpCliSoc, addr = tcpSerSoc.accept()
print("connected from", addr)

while True:
data = tcpCliSoc.recv(BUFFSIZE)
if not data:
break
tcpCliSoc.send('[%s] %s' % (bytes(ctime(), 'utf_8'), data))
tcpCliSoc.close()
tcpSerSoc.close()

TCP 客户端实现

from socket import *

__author__ = 'Lamer'

HOST = 'localhost'
PORT = 21572
ADDR = (HOST, PORT)
BUFFSIZE = 1024

tcpCliSoc = socket(AF_INET, SOCK_STREAM)
tcpCliSoc.connect(ADDR)

while True:
data = input('>')
if not data:
break
tcpCliSoc.send(data.encode())
data = tcpCliSoc.recv(BUFFSIZE)
if not data:
break
print(data.decode(encoding='utf-8'))

tcpCliSoc.close()

最佳答案

字符串插值是创建一个字符串,而不是字节对象:

>>> '%s foo' % b'bar'
"b'bar' foo"

(注意结果是 str 类型——它有一个 'b' 和一些您可能不想要的引号)。

你可能想用字节插入字节:

>>> b'%s foo' % b'bar'
b'bar foo'

或者,在您的代码中:

tcpCliSoc.send(b'[%s] %s' % (bytes(ctime(), 'utf_8'), data))

关于python - TypeError : a bytes-like object is required, 不是 'str',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com