2017-04-15 3 views
0

Le problème est que lorsque j'exécute ce code pour créer un client simple, j'obtiens une erreur comme celle-ci.Problème lors de la création de TCP_CLIENT simple

import socket 

target_host = "www.google.com" 
target_port = 80 

# ➊ create a socket object 
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# ➋ connect the client 
client.connect((target_host,target_port)) 

# ➌ send some data 
client.send("GET/HTTP/1.1\r\nHost: google.com\r\n\r\n") 

# ➍ receive some data 
response = client.recv(4096) 

print response 

I abord créer un objet de prise de courant avec les paramètres AF_INET et SOCK_STREAM ➊. Le paramètre AF_INET indique que nous allons utiliser une adresse IPv4 standard ou nom_hôte et SOCK_STREAM indique qu'il s'agit d'un client TCP. Nous connectons ensuite le client au serveur ➋ et lui envoyons des données ➌. La dernière étape consiste à recevoir des données et à imprimer la réponse.

Cette erreur se produit lorsque je lance retraçage (le plus récent appel dernier):

File "C:\Users\engin\Desktop\TCP_client.py", line 10, in <module> 
client.send("GET/HTTP/1.1\r\nHost: google.com\r\n\r\n") 
TypeError: a bytes-like object is required, not 'str' 

Quel est le problème?

Répondre

0

Vous essayez d'exécuter Python2-Code avec Python3, ce qui entraînerait d'abord une erreur de syntaxe, en raison de l'instruction print. Deuxièmement, vous devez envoyer des octets, pas des chaînes:

client.send(b"GET/HTTP/1.1\r\nHost: google.com\r\n\r\n") 
+0

Merci beaucoup @Daniel. Il travaille avec python 2.7. –