【问题标题】:Sockets can't send data [duplicate]套接字无法发送数据[重复]
【发布时间】:2014-03-15 00:29:17
【问题描述】:

代码

host = "127.0.0.1"
port=4446
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind((host,port))

s.listen(1)

print("Listening for connections...")

q,addr = s.accept()

data = input("Type something in")
q.send(data)
s.close

错误

TypeError:'str' does not support the buffer interface

所以我知道这里有数百个关于此错误的问题,但我仍然无法想出解决方案,你们中的哪一个可以帮助我吗? :(

【问题讨论】:

  • @Wooble:这是sopython.com 常见问题列表中的一个..
  • @Wooble 我无法使用其他任何问题找到答案,所以我自己做了。

标签: python sockets python-3.x


【解决方案1】:

在 Python 3 中,字符串是 Unicode 值,但套接字只能采用编码字节。

首先对您的数据进行编码:

q.send(data.encode('utf8'))

我在这里选择了 UTF-8 作为要使用的编解码器,但您需要有意识地选择适合您特定应用程序的编码。

【讨论】:

  • 我应该就刚刚遇到的客户问题提出一个新问题,还是在此处发布?
  • 我会提出一个新问题。
  • 我必须在两个问题之间等待 20 分钟 :( IMM NOT A ROBOAT
  • @user3241744:仔细挑选你的问题,确保我们有一个清楚的例子说明出了什么问题,20 分钟很快就会过去。顺便说一句,速率限制不仅仅适用于机器人。
  • 哈哈,20分钟就过去了,真快。
【解决方案2】:

字符串是 python 3 中的 Unicode 对象。您需要在发送之前将其编码为字节字符串。

Data.encode("ASCII")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多