TypeError:str 不支持缓冲区接口[重复]
- 2025-03-26 09:09:00
- admin 原创
- 16
问题描述:
我正在尝试用 Python 编写一个简单的客户端和服务器消息传递程序,但一直收到错误“TypeError:'str' 不支持缓冲区接口”,我甚至不知道这是什么意思。我基本上是 Python 的初学者,也是网络方面的完全初学者。
我猜是因为某种原因我无法发送字符串数据?如果是这样,我该如何发送字符串?
作为参考,我从中获得的大部分示例代码都是针对 Python 2.x 的,而我正在用 Python 3 执行此操作,因此我相信这是版本转换中需要解决的另一个问题。我到处寻找同样的问题,但无法真正弄清楚如何将同样的修复应用于我的情况。
以下是服务器的初始代码:
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 5000))
server_socket.listen(5)
print("TCP Server Waiting for client on port 5000")
while 1:
client_socket, address = server_socket.accept()
print("TCP Server received connect from: " + str(address))
while 1:
data = input("SEND(Type q or Q to quit):")
if(data == 'Q' or data == 'q'):
client_socket.send(data)
client_socket.close()
break;
else:
client_socket.send(data)
data = client_socket.recv(512)
if(data == 'q' or data == 'Q'):
client_socket.close()
break;
else:
print("Received: " + data)
解决方案 1:
在 Python 3 中,字节字符串和 unicode 字符串现在是两种不同的类型。由于套接字无法识别字符串编码,因此它们使用原始字节字符串,其接口与 unicode 字符串略有不同。
因此,现在,每当您需要将 unicode 字符串用作字节字符串时,您都需要encode()
它。当您有一个字节字符串时,您需要decode
它才能将其用作常规 (python 2.x) 字符串。
Unicode 字符串是引号括起来的字符串。字节字符串是b""
括起来的字符串
请参阅Python 3.0 中的新功能。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD