2015-03-21 2 views
-1
import socket 

serverName = "hostname" 
serverPort = 12000 

clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
message = input('input lowercase sentence:') 
clientSocket.sendto(message, (serverName, serverPort)) 
modifiedMessage, serverAddress = clientSocket.recvfrom(2048) 
print (modifiedMessage) 
clientSocket.close() 

дает эту ошибку'ул' не поддерживает интерфейс буфера - Python 3

Traceback (most recent call last): 
    File "C:/Python34/server1.py", line 11, in <module> 
    clientSocket.sendto(message, (serverName, serverPort)) 
TypeError: 'str' does not support the buffer interface 

Что мне делать?


Я закодировать этот код

import socket 

serverName = "hostname" 
serverPort = 12000 

clientSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 


message = input('input lowercase sentence:').encode('ascii') 

clientSocket.sendto(message,(serverName, serverPort)) 

modifiedMessage, serverAddress = clientSocket.recvfrom(2048) 


print (modifiedMessage.decode('ascii')) 

clientSocket.close() 

Но это все еще ошибки

Traceback (most recent call last): 
    File "J:\Sistem Jaringan\Task I\client.py", line 11, in <module> 
    clientSocket.sendto(message,(serverName, serverPort)) 
socket.gaierror: [Errno 11004] getaddrinfo failed 

Как я могу это исправить?

ответ

0

Сокеты отправляют байты на другой конец соединения. Кодируйте строки в байты перед попыткой отправки. В методе sendto измените message на message.encode(). Добавьте аргумент encoding='xyz', если вы не хотите кодировку utf-8 по умолчанию. Получаемые вами modifiedMessage также будут байтами, и вы можете их декодировать в строку.

+0

Можете ли вы дать мне полный код? –

+0

Я ответил на ваш вопрос «буферный интерфейс». Пожалуйста, подтвердите это, приняв его. Что касается вашего нового вопроса, имя хоста - это имя аргумента, но «hostname» не является признанным именем хоста. Я считаю, что «localhost» есть. При этом появляется еще одна ошибка. Чтобы клиент мог подключиться к серверу, должен быть сервер. Вам также нужно написать server.py, который запускает сервер «localhost», прослушивающий порт сервера. Это должно быть выполнено в первую очередь. Пример сокета должен иметь пример. –