fettyteddy
Grünschnabel
Hey,
ich habe unter Linux (C++) einen Client geschrieben. Dieser läuft mit zwei thread zum senden und empfangen von Daten.
Soweit läuft der Client ohne Probleme, bis der Server meine Verbindung schließt, was immer mal vorkommen kann. Testweise habe ich einfach mal das Netzwerkkabel gezogen. Aber wie kann ich prüfen ob eine Verbindung noch besteht?
Ich bin davon ausgegangen, wenn keine Verbindung besteht und ich send ausführe, das ich einen Fehler erhalten müsste.
if (send(socketDescriptor, buf_out, strlen(buf_out) + 1, 0) < 0) {
cerr << "cannot send data ";
objWriteLogFile.writeline_log_file("cannot send data");
close(socketDescriptor);
exit(1);
}
doch es wird kein Fehler ausgeben. Alles ist, als würde die Verbindung noch bestehen. Nur irgendwie muss ich eine Verbindungsprüfung machen, um festzustellen wann ich neu Verbinden muss.
auch
if (socketDescriptor < 0) {
objWriteLogFile.writeline_log_file("connection off");
cout << "socketDescriptor connection off" << endl;
} else {
objWriteLogFile.writeline_log_file("connection on");
cout << "socketDescriptor connection on" << endl;
}
zeigt eine bestehende Verbindung an (socketDescriptor connection on). Doch ohne Netzwerkkabel keine Verbindung!
Wäre schön wenn mir bei dem Problem jemand helfen könnte!
Danke
ich habe unter Linux (C++) einen Client geschrieben. Dieser läuft mit zwei thread zum senden und empfangen von Daten.
Soweit läuft der Client ohne Probleme, bis der Server meine Verbindung schließt, was immer mal vorkommen kann. Testweise habe ich einfach mal das Netzwerkkabel gezogen. Aber wie kann ich prüfen ob eine Verbindung noch besteht?
Ich bin davon ausgegangen, wenn keine Verbindung besteht und ich send ausführe, das ich einen Fehler erhalten müsste.
if (send(socketDescriptor, buf_out, strlen(buf_out) + 1, 0) < 0) {
cerr << "cannot send data ";
objWriteLogFile.writeline_log_file("cannot send data");
close(socketDescriptor);
exit(1);
}
doch es wird kein Fehler ausgeben. Alles ist, als würde die Verbindung noch bestehen. Nur irgendwie muss ich eine Verbindungsprüfung machen, um festzustellen wann ich neu Verbinden muss.
auch
if (socketDescriptor < 0) {
objWriteLogFile.writeline_log_file("connection off");
cout << "socketDescriptor connection off" << endl;
} else {
objWriteLogFile.writeline_log_file("connection on");
cout << "socketDescriptor connection on" << endl;
}
zeigt eine bestehende Verbindung an (socketDescriptor connection on). Doch ohne Netzwerkkabel keine Verbindung!
Wäre schön wenn mir bei dem Problem jemand helfen könnte!
Danke