2017-01-09 21 views
0

Ich habe andere beantwortete Fragen untersucht und die einzige Lösung, die ich gefunden habe, ist, dass es verschlüsselt gesendet werden muss. Aber ich erhalte immer noch diesen Fehler, ob das verschlüsselt ist oder nicht. Irgendwelche Ideen??? Die kommentierten Zeilen sind diejenigen, die ich entfernt habe, damit sie wie beabsichtigt funktionieren. Ich bin neu in dieser so hoffentlich diese Frage sinnvoll. (Ich verwende Version 3,6)Python sendto Fehler TypeError: muss str sein, nicht bytes

Host = servershost 
Port = 12345 

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.bind((Host, Port)) 
s.setblocking(0) 

rT = threading.Thread(target=receiving, args=("RecvThread", s)) 
rT.start() 

message = input(Username + ": ") 
#s.sendto(message) 
while message != 'q': 
    if message != '': 
     s.sendto(Username + message.encode('utf-8'), server) 
    #tlock.aquire() 
    message = input(Username + ': ') 
    tlock.release() 
    time.sleep(0.2) 

shutdown = True 
rT.Join() 
s.close() 
+0

'Username' wie Bytes mir sieht nicht aus. –

+0

voll stacktrace bitte ... –

+0

@ Jean-FrançoisFabre Traceback (jüngste Aufforderung zuletzt): Datei "C: \ Benutzer \ pov7230 \ Desktop \ Notepad ++ \ realchat.py", Linie 77, in s.sendto (Benutzername + message.encode ('utf-8'), Server) TypeError: muss str sein, nicht bytes – Ace

Antwort

0

socket Objekt braucht ein bytes (binär) Objekt, kein String (zumindest in Python 3).

So kodieren nur die beiden Saiten so das Ergebnis ein bytes Objekt ist:

s.sendto((Username + message).encode('utf-8'), server) 
Verwandte Themen