Hallo liebe Programmierer.
Ich habe einen IRC Chat-Clienten geschrieben. Alles funktioniert soweit wunderbar.
Nur leider stürzt das Programm ab, wenn mein Plaste-Router (DSL) den 24 stündlichen disconnect durchführt.
Der lokale Client-Socket bekommt nicht mit, wenn der Router ne neue IP Adresse bekommt.
Der Socket ist für mein Programm noch valid, getsockopt() liefert keinen Fehler.
Die Störung offenbart sich erst dann, wenn nen String gesendet wird - das Programm dann einfach abstürzt.
Ich habe schon alles mögliche versucht, den Fehler irgendwie abzufangen, leider ohne Erfolg.
Ich könnte das Programm via Script über eine unendlich Schleife nach dem crash neu starten lassen, aber das ist doch irgendwie so, als würde man ein Pflaster drüber kleben...
Ich könnte auch ne Routine erstellen, die die externe IP auf Änderung prüft, und gegebenfalls nen neuen Socket erstellt, aber ich glaube es gibt bestimmt eine bessere Lösung...
Ich bin echt ratlos, google liefert nichts brauchbares darüber.
Bitte helft einem Laien und Hobby-Programmierer, sonst fallen ihm noch mehr Haare aus.
Hier noch meine send Routine, falls es wichtig ist.
Ich habe einen IRC Chat-Clienten geschrieben. Alles funktioniert soweit wunderbar.
Nur leider stürzt das Programm ab, wenn mein Plaste-Router (DSL) den 24 stündlichen disconnect durchführt.
Der lokale Client-Socket bekommt nicht mit, wenn der Router ne neue IP Adresse bekommt.
Der Socket ist für mein Programm noch valid, getsockopt() liefert keinen Fehler.
Die Störung offenbart sich erst dann, wenn nen String gesendet wird - das Programm dann einfach abstürzt.
Ich habe schon alles mögliche versucht, den Fehler irgendwie abzufangen, leider ohne Erfolg.
Ich könnte das Programm via Script über eine unendlich Schleife nach dem crash neu starten lassen, aber das ist doch irgendwie so, als würde man ein Pflaster drüber kleben...
Ich könnte auch ne Routine erstellen, die die externe IP auf Änderung prüft, und gegebenfalls nen neuen Socket erstellt, aber ich glaube es gibt bestimmt eine bessere Lösung...
Ich bin echt ratlos, google liefert nichts brauchbares darüber.
Bitte helft einem Laien und Hobby-Programmierer, sonst fallen ihm noch mehr Haare aus.
Hier noch meine send Routine, falls es wichtig ist.
Code:
void SendIRCmsg(){
SocketCheck = getsockopt (Socket, SOL_SOCKET, SO_ERROR, &Error, &Errlen);
if (SocketCheck != 0) NotConnected = true;
if (Error != 0) NotConnected = true;
if (!NotConnected){
fcntl(Socket, F_SETFL, O_WRONLY);
SocketState = send(Socket, IRC_Pld, strlen(IRC_Pld), 0);
if (SocketState == -1) NotConnected = true;
else{
sprintf(Sockinout, "out");
fcntl(Socket, F_SETFL, O_NONBLOCK);
for (LinePtrArr = 0; IRC_Pld[LinePtrArr] != '\0'; LinePtrArr ++){
if (IRC_Pld[LinePtrArr] == '\n') IRC_Pld[LinePtrArr] = '/';
if (IRC_Pld[LinePtrArr] == '\r') IRC_Pld[LinePtrArr] = '/';
}
}
}
UpdateonNext = true;
}