Próbuję utworzyć prosty program do obsługi wiadomości dla klienta & w pythonie, i ciągle otrzymuję komunikat "TypeError:" str 'nie obsługuje interfejsu bufora "i nie naprawdę nawet wiem, co to znaczy. W większości jestem początkującym użytkownikiem Pythona i kompletnym początkującym z siecią.TypeError: str nie obsługuje interfejsu buforowego
Jestem zakładając z jakiegoś powodu nie może wysyłać dane ciąg? Jeśli tak, to w jaki sposób wysłać ciąg?
Dla przykładu przykładowy kod, w którym mam większość tego, był dla Pythona 2.x, i robię to w Pythonie 3, wierzę więc, że to kolejne załamanie do przejścia z wersji przejścia. Szukałem tego samego problemu, ale nie mogę się dowiedzieć, jak zastosować te same poprawki do mojej sytuacji.
Oto kod rozpoczynający serwera:
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)
Spróbuj wysłać ['StringIO.StringIO (dane)'] (http://docs.python.org/library/stringio.html) zamiast tylko 'danych'. –
Na marginesie: możesz uprościć instrukcje if w następujący sposób: 'jeśli dane w ('q', 'Q'):' – gsk
@gsk: Lub 'if data.lower() ==" q ":' . –