Raspberry PI Client/Serveur de Socket en Python
Je suis en train de mettre en place un Python prise entre mon Raspberry Pi (course Raspbian) et mon Macbook Pro (exécution de Mavericks).
Les deux appareils sont connectés au même réseau WiFi dans mon appt. Je lance le serveur de code sur mon RPi, et puis le code du client sur mon Macbook (j'ai aussi essayé l'inverse). Je pense que je vais rater une étape, car le code je suis à l'aide que j'ai trouvé sur plusieurs sites, je suppose qu'il fonctionne. J'ai aussi vérifié que mon Macbook a pare-feu est désactivé.
Code Serveur:
from socket import *
host = "127.0.0.1"
print host
port = 7777
s = socket(AF_INET, SOCK_STREAM)
print "Socket Made"
s.bind((host,port))
print "Socket Bound"
s.listen(5)
print "Listening for connections..."
q,addr = s.accept()
data = raw_input("Enter data to be sent: ")
q.send(data)
Code Client:
from socket import *
host = "127.0.0.1"
print host
port=4446
s=socket(AF_INET, SOCK_STREAM)
print "socket made"
s.connect((host,port))
print "socket connected!!!"
msg=s.recv(1024)
print "Message from server : " + msg
J'obtiens l'erreur:
Traceback (most recent call last): File "TCPclient.py", line 9, in <module> s.connect((host,port)) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py",
ligne de 224, de méthamphétamine
retour getattr(self._sock,nom)(*args)
socket.erreur: [Errno 61] Connexion refusée
Mon processus pour l'exécution du code est:
- type "python TCPserver.py" en RPi terminal
- type "python TCPclient.py en Macbook terminal
Puis je recevoir le message d'erreur sur mon Macbook, pas d'erreur sur le RPi
Mes questions sont:
- Est 127.0.0.1 l'entrée appropriée pour "hôte"? (veuillez noter que j'ai aussi essayé "localhost")
- L'entrée de l'hôte doivent être de même pour le code client et serveur?
- Si le RPi et Macbook tous deux être connectés au même réseau wi-fi?
- Est-il mis en place qui doit être fait soit sur le RPi ou mon Macbook pour que cela fonctionne (notez mon RPi Modèle B, de nouvelles, et je n'ai pas configurer autre chose sur lui avant ce)
- Savez-vous pourquoi je reçois cette erreur et comment la corriger?
Votre aide est grandement appréciée!!
0.0.0.0
comme valeur de l'hôte. Laissez-moi savoir ce qu'il se passe. Aussi, le code exécuté dans le mac est assez long, ou vous n'avez pas fermé la chaîne?OriginalL'auteur user3476808 | 2014-03-29
Vous devez vous connecter pour publier un commentaire.
127.0.0.1 est une adresse IP spéciale pour la machine locale.
Vous devez définir l'adresse IP réelle (LAN) de votre mac dans le code client.
Vous devriez également se lier sur cette adresse IP sur le serveur, ou sur 0.0.0.0 à se lier à toutes les adresses IP disponibles.
Vous devez également utiliser le même numéro de port sur le client et le serveur.
Et pour répondre à vos questions:
Est 127.0.0.1 l'entrée appropriée pour "hôte"? (veuillez noter que j'ai aussi essayé "localhost")
127.0.0.1 est la même chose que localhost, cela signifie que la machine locale. Cela fonctionnera si vous exécutez le client et le serveur sur la même machine, le reste vous avez besoin de la vraie adresse IP de votre mac. Essayez de ifconfig dans une console.
l'entrée de l'hôte doivent être de même pour le code client et serveur?
Oui et non. Sur le serveur vous bind pour un port et une adresse, de sorte que vous aurez à attendre pour les connexions sur ce port et l'adresse. Vous pouvez utiliser l'adresse IP, ou 0.0.0.0.
si le RPi et Macbook tous deux être connectés au même réseau wi-fi?
Oui et non. Il va travailler avec le même réseau WiFi, mais il permettra également de travailler avec deux différents réseaux WiFi si elles sont reliées directement ou avec un routeur IP. La plupart du temps si ils sont connectés à internet à travers un NAT (network address translator), et alors il ne fonctionnera pas.
Est-il mis en place qui doit être fait soit sur le RPi ou mon Macbook pour que cela fonctionne (notez mon RPi Modèle B, de nouvelles, et je n'ai pas mis en place de toute autre chose sur cela avant)
Je ne sais pas beaucoup sur le RPi, mais il semble comme la norme de sockets TCP, qui devrait fonctionner hors de la boîte.
Savez-vous pourquoi je reçois cette erreur et comment la corriger?
Comme je l'ai dit au début: Vous essayez de vous connecter au RPi (127.0.0.1) sur le mauvais port.
OriginalL'auteur Nicolas Defranoux
Vous avez créé une écoute sur le port 7777, alors vous vous êtes connecté sur 4446 !!!!!
il suffit de connecter sur le même port vous sont à l'écoute =)
OriginalL'auteur Ahmed S. El-Afifi