2017-10-15 6 views
0

Je tente d'écrire un programme de prise en utilisant Python. Dans mon côté client, j'ai cette section:Python Socket

clientSocket = socket(AF_INET, SOCK_STREAM)   
clientSocket.connect((serverName, serverPort)) 

linesInBytes = clientSocket.recv(1024) 
print(linesInBytes) 

et dans mon côté serveur je:

connectionSocket, addr = serverSocket.accept() 
#Set secret word 
word = 'Arkansas' 
linesForString = ''  
#Prints out number of letters 
for x in word: 
    linesForString += '_ ' 

linesInBytes = linesForString.encode('utf-8') 
connectionSocket.send(linesInBytes) 

Et pour une raison quelconque quand il imprime sur le côté client, il imprime:

b'_ _ _ _ _ _ _ _ _

Et il n'y a pas où dans le code où j'imprimer un b. D'où vient ce b? Merci!

+0

essayer linesInBytes d'impression avant de l'envoyer et de voir ce qu'il contient, s'il vous plaît lire https://stackoverflow.com/questions/6269765/what-does-the-b-character-do-in-front-of-a-string -literal – JLev

+0

Aussi, avez-vous vraiment besoin de l'encodage? – JLev

+1

En Python 'b « .... »' représente une chaîne d'octets (soit une chaîne d'octets bruts sans codage associé). Voir par exemple [Cette question] (https://stackoverflow.com/questions/6224052/what-is-the-difference-between-a-string-and-a-byte-string). – larsks

Répondre

0

.decode('utf8') les données reçues octets en une chaîne. Python 3 affiche b'' pour indiquer une chaîne d'octets par rapport à une chaîne Unicode.