Python Sockets Peer-to-Peer
Ich versuche, um ein einfaches Peer-to-Peer-Netzwerk, in Python 2.7. Das problem ist, ich kann nicht scheinen, um in der Lage sein, um eine Verbindung zwischen zwei Maschinen, in dem Sie beide fungieren als ein server und ein client. Kann ich es auf der Arbeit, wenn man eine server und der andere client nicht aber, wenn Sie sind beide beides. Brauche ich zum erstellen von 2 Steckdosen? Auch ich bin über TCP zu verbinden.
UPDATE:
import socket, sys # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
if sys.argv[1] == "connect":
host = sys.argv[2]
s.connect((host, port))
s.close
else:
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
c.send('Thank you for connecting')
c.close()
Die codes nicht sehr gut, denn für jemanden, der eine Verbindung als client benutzen Sie das argument "connect" gefolgt vom Hostnamen oder die IP von der zweiten Maschine. Ich kann nicht Holen die beiden zu verbinden und dienen einander gleichzeitig.
Ich aktualisiert die Frage. Danke!
InformationsquelleAutor user3566150 | 2014-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, zwei Steckdosen notwendig sind. Der listening-socket öffnen sollten, auf eine Konstante-port und den client-port geöffnet werden sollte, auf einem anderen (möglicherweise dynamisch) port, in der Regel höher in der port-Bereich. Als Beispiel:
Server-sockets auf port 1500, client-sockets auf port 1501.
Peer1: 192.168.1.101
Peer2: 192.168.1.102
Wenn peer1 verbindet peer2 sieht es wie folgt aus: 192.168.1.101:1501 -> 192.168.1.102:1500.
Wenn peer2 verbindet peer1 sieht es wie folgt aus: 192.168.1.102:1501 -> 192.168.1.101:1500.
Listening TCP-sockets sind auch in der Regel in einem separaten thread ausgeführt, da Sie blockiert sind.
InformationsquelleAutor Chase Adams