2014-02-15 127 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")