Python 套接字发送缓冲区与。强度

标签 python string sockets send

我正在尝试让一个基本服务器(从 Beginning Python 复制)来发送一个 str。

错误:

c.send( "XXX" )
TypeError: must be bytes or buffer, not str

它似乎在酸洗对象时起作用。我发现的所有示例似乎都可以毫无问题地发送字符串。

如有任何帮助,我们将不胜感激

斯蒂芬

import socket  
import pickle  

s = socket.socket()

host = socket.gethostname()

port = 80

s.bind((host, port))

s.listen(5)

while True:  
    c, addr = s.accept()  
    print( "Got Connection From ", addr )  
    data = pickle.dumps(c)  
    c.send( "XXX" )  
    #c.send(data)  
    c.close()

最佳答案

您似乎尝试在 Python 3 中使用 Python 2.x 示例,并且遇到了这些 Python 版本之间的主要差异之一。

对于 Python < 3,“字符串”实际上是二进制字符串,而“unicode 对象”是正确的文本对象(因为它们可以包含任何 Unicode 字符)。

在 Python 3 中,unicode 字符串是“常规字符串”(str),字节字符串是单独的对象。

低级 I/O 只能用数据(字节串)完成,不能用文本(字符序列)。对于 Python 2.x str 也是“二进制数据”类型。在 Python 3 中,它不再存在,应该使用特殊的“数据”对象之一。对象被腌制成这样的字节串。如果您想在代码中手动输入它们,请使用“b”前缀(b“XXX”而不是“XXX”)。

关于Python 套接字发送缓冲区与。强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411864/

相关文章:

java - Socket收不到消息

python - 从 python 脚本执行机器人框架文件

java - 如何减少 java.awt.font 中的字母间距?

Java ArrayList拆分每个对象

r - 如何在 R 中处理 "wrap"行?

actionscript-3 - Flash 套接字 HTTP-POST 示例

java - 在Java中,我们可以只使用一个套接字同时运行多个ObjectOutputStream吗?

python - 使用 Selenium 登录

python - asyncio.wait_for 不会传播 CancelledError,如果在取消之前等待 future 为 "done"

python - 绘制堆积条形图