2014-02-15 129 views
1

代码套接字不能发送数据

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 

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

+0

@Wooble:这是一个为http://sopython.com常见问题列表。 –

+0

@Wooble我找不到我的答案使用任何其他问题,所以我做了我自己的。 – user3241744

回答

1

在Python 3中,字符串是Unicode的,但插座只能采取编码字节

第一编码您的数据:

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

我拿起UTF-8在这里作为编解码器但你需要有意识地选择适合你的特定应用的编码。

+0

我应该就刚刚拿到的客户问题提出一个新问题,或将其发布到此处? – user3241744

+0

我想提出一个新的问题。 –

+0

我必须在两个问题之间等待20分钟:(IMM不是ROBOAT – user3241744

0

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

Data.encode("ASCII")