2016-05-24 12 views
1

Meine Frage bezieht sich auf die Funktion socket.close(). Sobald wir dies in unserem Programm aufrufen, müssen wir die Socket-Definition neu definieren, um eine neue Verbindung zu starten. Dieser Code funktioniert,Python-Socket: Behandlung mehrerer Verbindungen mit demselben Socket

 import socket 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    result1 = sock.connect_ex(('127.0.0.1',9001)) 
    sock.close() 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    result2 = sock.connect_ex(('127.0.0.1',8119)) 
    sock.close() 

Diese Verbindung gibt "0" als Ausgang (result1, result2) nach jedem Socket-Aufruf .. Aber ich etwas wie dieses benötigen,

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
result1 = sock.connect_ex(('127.0.0.1',9001)) 
result2 = sock.connect_ex(('127.0.0.1',8119)) 
sock.close() 

In diesem Fall ist die Ausgabe von result2 ungleich null integer .... Gibt es irgendeine Funktion in der Buchse außer dem Schließen, die ich verwenden kann, um in beiden Fällen eine Nullausgabe zu erhalten.

Th anks

Antwort

0

Da Sie TCP-Sockets verwenden, benötigen Sie 1 Socket pro Verbindung.
Das bedeutet, dass Sie für jede neue Verbindung einen neuen Socket erstellen müssen, was in Ihrem ersten Beispiel der Fall ist.

Die Funktionen connect und close funktionieren nur mit der Verbindung, mit der sie verwendet wird.
So mehrere connect und close Aufrufe müssen für mehrere Verbindungen verwendet werden.

Z. B:

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
result1 = sock.connect_ex(('127.0.0.1',9001)) 
result2 = sock2.connect_ex(('127.0.0.1',8119)) 
sock.close() 
sock2.close() 
0

Nein, Sie können keine Steckdose zweimal anschließen. Es ist auch nicht klar, warum du es möchtest. Stellen Sie wie im ersten Beispiel zwei Sockets her.

Verwandte Themen