2014-02-15 4 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 NOT A ROBOAT – user3241744

0

Строки являются объектами Unicode в python 3. Перед отправкой необходимо закодировать его в байтовую строку.

Data.encode("ASCII") 
Смежные вопросы