socket timeout verändern um nw unterbrechungen zu erkennen
Verfasst: Freitag 10. Juli 2009, 08:23
Moin.
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
client.py
naja... weswegen ich frag is die tatsache, zum einen weil das nichts gebracht hat - ich bekomm den fehler immer noch erst nach 8 sekunden und zum andern, dass ich in der msdn folgenden hinweis zu SO_KEEPALIVE gefunden hab der mich nun "leicht" verwirrt...:
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
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