Folgendes Problem: Ich möchte zwischen zwei Rechnern, die in verschiedenen Netzen hängen (d.h. nicht dass die unbedingt übers Internet miteinander verbunden sind), welche NICHT unter meiner Administration stehen die Leitung auf kurze Ausfälle überprüfen. Als Testverfahren dachte ich an einen einfaches Socket Server Client Konstrukt.
Ich hab das hier mal in unserem Firmennetz zwischen Rechner probiert und festgestellt, dass ich, nachdem ich mein Netzwerkstecker gezogen hab´, erst einen Fehler nach ca. 8 Sekunden bekomme. Meine Vermutung ist, dass das mit der Eigenschaft " SO_KEEPALIVE = 8 "
zu tun hat. Lieg ich da richtig?
Ich bin mal davon ausgegangen, dass das der Teil is der dieses "Timeout" beeinflusst und habs versucht folgendermaßen zu verändern:
server.py
Code: Alles auswählen
import time
import socket
HOST, PORT = '', 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'verbunden: ', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
Code: Alles auswählen
import time
import socket
HOST, PORT = '172.16.1.123', 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0)
s.connect((HOST, PORT))
try:
while 1:
s.send(time.strftime('%Y-%m-%d %H:%M:%S'))
data = s.recv(1024)
print 'Received', repr(data)
time.sleep(1)
except:
print 'Connection lost'
finally:
s.close()
SO_KEEPALIVE BOOL Sends keep-alives. Not supported on ATM sockets (results in an error).
und jetz nich sicher bin wie ich verlässlich behaupten kann, dass die verbindung (auch wenns nur ne halbe sekunde is(das würde ich gern einstellen)) weg ist.
danke schon mal für antworten
grüß
limepix