Je suis en train de faire un client simple programme de messagerie serveur & en python, et je reçois toujours l'erreur "TypeError: 'str' ne supporte pas l'interface tampon" et ne pas vraiment même savoir ce que cela signifie. Je suis un débutant avec python pour la plupart, et un débutant complet avec le réseautage.TypeError: str ne prend pas en charge l'interface tampon
Je suppose que pour une raison quelconque, je ne peux pas envoyer de données de chaîne? Si c'est le cas, comment envoyer une chaîne? Pour référence, l'exemple de code dont j'ai tiré la plus grande partie était pour python 2.x, et je le fais en Python 3, donc je crois que c'est un autre problème à résoudre à partir de la transition de version. J'ai cherché autour pour le même problème, mais ne peux pas vraiment travailler comment appliquer les mêmes corrections à ma situation.
Voici le code à partir du serveur:
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)
Essayez d'envoyer ['StringIO.StringIO (data)'] (http://docs.python.org/library/stringio.html) au lieu de simplement 'data'. –
En note: vous pouvez simplifier vos if-statements comme suit 'si les données dans ('q', 'Q'):' – gsk
@gsk: Ou 'si data.lower() ==" q ":' . –