这个问题已经有了答案:
TypeError: 'str' does not support the buffer interface
7个答案
Python Socket Send Buffer Vs. Str
2个答案
我正在尝试用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)
最佳答案
在Python3中,字节字符串和Unicode字符串现在是两种不同的类型。
由于套接字不知道字符串编码,因此它们使用的是原始字节字符串,这些字符串的接口与Unicode字符串略有不同。
所以,现在,只要您有一个Unicode字符串需要用作字节字符串,就需要将其encode()
当您有一个字节字符串时,您需要使用它作为常规(python 2.x)字符串。
Unicode字符串是用引号括起来的字符串。
字节字符串是封闭字符串
请参见What's new in python 3.0。
关于python - TypeError:str不支持缓冲区接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11781639/