Estoy tratando de hacer un simple cliente & programa de mensajes del servidor en python, y sigo obteniendo el error "TypeError: 'str' no admite la interfaz del buffer" y no realmente sé lo que eso significa. Soy un principiante con Python en su mayor parte, y un principiante completo con redes.TypeError: str no es compatible con la interfaz del buffer
Supongo que por alguna razón no puedo enviar datos de cadena? Si este es el caso, ¿cómo enviaría una cadena?
Como referencia, el código de ejemplo del que obtuve la mayoría de esto fue para Python 2.x, y estoy haciendo esto en Python 3, así que creo que es otro inconveniente el que se resuelva desde la transición de versión. He buscado el mismo problema pero no puedo encontrar la forma de aplicar las mismas soluciones a mi situación.
Aquí está el código de inicio para el servidor:
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 5000))
server_socket.listen(5)
print("TCP Server Waiting for client on port 5000")
while 1:
client_socket, address = server_socket.accept()
print("TCP Server received connect from: " + str(address))
while 1:
data = input("SEND(Type q or Q to quit):")
if(data == 'Q' or data == 'q'):
client_socket.send(data)
client_socket.close()
break;
else:
client_socket.send(data)
data = client_socket.recv(512)
if(data == 'q' or data == 'Q'):
client_socket.close()
break;
else:
print("Received: " + data)
Intente enviar ['StringIO.StringIO (data)'] (http://docs.python.org/library/stringio.html) en lugar de simplemente 'data'. –
Como nota al margen: puede simplificar sus sentencias if de la siguiente manera 'if data in ('q', 'Q'):' – gsk
@gsk: O 'if data.lower() ==" q ":' . –