我正在尝试制作一个客户端 - 服务器模型,作为 python 网络编程的新手,我遇到了一个错误,该错误指出以下内容:-
tcpCliSoc.send(’[%s] %s’ % (bytes(ctime(), ‘utf_8’), data)) TypeError: 需要类似字节的对象,而不是 ‘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()
原文由 Payas Pandey 发布,翻译遵循 CC BY-SA 4.0 许可协议
字符串插值是创建一个字符串,而不是字节对象:
(请注意,结果的类型为
str
-- 它有一个'b'
并且其中插入了一些您可能不想要的引号)。您可能想用字节插入字节:
或者,在您的代码中: