Raspberry PI Server/Client-Socket in Python
Bin ich, die versuchen, ein Python-socket zwischen meinem Raspberry Pi (läuft Raspbian) und mein Macbook Pro läuft Mavericks).
Beide Geräte mit dem gleichen WiFi-Netzwerk, in meinem appt. Ich betreibe den server-code auf meinem RPi und dann der client-code auf meinem Macbook (ich habe auch versucht den Rückwärtsgang). Ich glaube, ich bin fehlt eine set-up-Schritt, weil der code, den ich verwende, fand ich auf mehreren Seiten, so gehe ich davon aus es funktioniert. Ich habe auch überprüft, dass mein Macbook hat firewall ausgeschaltet.
Server-Code:
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)
Client-Code:
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
Bekomme ich die Fehlermeldung:
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",
line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 61] Verbindung abgelehnt
Mein Prozess für die Ausführung der code ist:
- Typ "python TCPserver.py" in der RPi-terminal
- Typ "python TCPclient.py in Macbook terminal
Dann bekomme ich die Fehlermeldung auf meinem Macbook, kein Fehler auf der RPi
Meine Fragen sind:
- Ist 127.0.0.1 die richtige Eingabe für "host"? (bitte beachten, ich habe auch versucht, "localhost")
- Führt die Eingabe für die host müssen Sie das gleiche für die client-und server-code?
- Sollte der RPi und Macbook beide mit dem gleichen WiFi-Netzwerk?
- Gibt es eine set-up, die getan werden muss, die entweder auf dem RPi oder mein Macbook, um für diese zu arbeiten (Bitte beachten Sie mein RPi ist das Modell B, neu, und ich nicht schon etwas anderes vor heute)
- Wissen Sie, warum ich diese Fehlermeldung und wie es zu lösen ist?
Ihre Hilfe ist sehr geschätzt!!
0.0.0.0
als host-Wert. Lassen Sie mich wissen, was passiert. Auch die Ausführung von code in der mac ist ziemlich lange, oder Sie haben nicht geschlossen der string?InformationsquelleAutor user3476808 | 2014-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
127.0.0.1 ist eine spezielle IP-Adresse für die lokale Maschine.
Sie müssen die richtige IP-Adresse (im LAN) von mac in der client-code.
Sollten Sie binden Sie auch auf dieser IP auf dem server oder auf 0.0.0.0 zum binden an alle IP-Adressen.
Sie müssen auch den gleichen port-Nummer auf dem client und dem server.
Und um Antworten auf Ihre Fragen:
Ist 127.0.0.1 die richtige Eingabe für "host"? (bitte beachten, ich habe auch versucht, "localhost")
127.0.0.1 ist die gleiche, als localhost, bedeutet es, dass die lokale Maschine. Dies funktioniert, wenn Sie laufen client und server auf der gleichen Maschine befinden, sonst müssen Sie die tatsächliche IP-Adresse Ihres mac. Versuchen Sie ifconfig in einer Konsole.
Stellt die Eingabe für die host müssen Sie das gleiche für die client-und server-code?
Ja und Nein. Auf dem server, der Sie binden auf einen port und eine Adresse, so dass Sie warten, für die verbindungen auf diesem port und Adresse. Sie können die IP-Adresse oder 0.0.0.0.
Sollte der RPi und Macbook beide mit dem gleichen WiFi-Netzwerk?
Ja und Nein. Es funktioniert mit dem gleichen WiFi-Netzwerk, es funktioniert aber auch mit zwei verschiedenen WLAN-Netzwerken, wenn Sie miteinander verbunden sind, direkt oder mit einem IP-router. Die meisten der Zeit, wenn Sie eine Verbindung zum internet über ein NAT (network address translator), und dann wird es nicht funktionieren.
gibt es irgendeine Einrichtung, die getan werden muss, die entweder auf dem RPi oder mein Macbook, um für diese zu arbeiten (Bitte beachten Sie mein RPi ist das Modell B, neu, und ich nicht schon etwas anderes vor heute)
Ich weiß nicht viel über den RPi, aber es sieht aus wie standard-TCP-sockets, das sollte funktionieren out of the box.
Wissen Sie, warum ich diese Fehlermeldung und wie es zu lösen ist?
Wie ich am Anfang bereits sagte: Sie versuchen, die Verbindung zum RPi (127.0.0.1) auf den falschen port.
InformationsquelleAutor Nicolas Defranoux
Haben Sie erstellt einen listener auf port 7777, dann ist Sie angeschlossen an 4446 !!!!!
nur eine Verbindung auf dem gleichen port, den Sie hören =)
InformationsquelleAutor Ahmed S. El-Afifi