snoopysalive
Mitglied
Hallo!
Ich hab hier ein Problem mit Sockets für C++ unter Linux. Ich habe mal das Code-Beispiel von http://www.zotteljedi.de/doc/socket-tipps/code_server.html nachimplementiert.
Zwar läuft das Programm dann auch einwandfrei, nur habe ich ein Problem mit dem Programmabbruch, sobald ich auf den Server per Telnet zugegriffen habe. Breche ich den Server nämlich mit STRG-C ab, wenn Telnet entweder gerade darauf zugreift oder eine Telnet-Verbindung abgebaut wurde (also sobald Telnet zu irgendeinem Zeitpunkt während der Serverausführung darauf zugreift), lässt sich das Programm mindestens eine Minute lang nicht mehr starten, weil bind() nicht auf den von mir benutzten Port zugreifen kann, da dieser noch immer in Verwendung ist.
Das Problem tritt allerdings nicht auf, wenn man nicht mit Telnet auf den Server zugreift. Jetzt stellt sich also die Frage, wie man nach einem Programmabbruch (STRG-C) den benutzten Port umgehend wieder freigeben kann. Kann mir da jemand auf die Sprünge helfen?
Danke,
Matthias
Ich hab hier ein Problem mit Sockets für C++ unter Linux. Ich habe mal das Code-Beispiel von http://www.zotteljedi.de/doc/socket-tipps/code_server.html nachimplementiert.
Zwar läuft das Programm dann auch einwandfrei, nur habe ich ein Problem mit dem Programmabbruch, sobald ich auf den Server per Telnet zugegriffen habe. Breche ich den Server nämlich mit STRG-C ab, wenn Telnet entweder gerade darauf zugreift oder eine Telnet-Verbindung abgebaut wurde (also sobald Telnet zu irgendeinem Zeitpunkt während der Serverausführung darauf zugreift), lässt sich das Programm mindestens eine Minute lang nicht mehr starten, weil bind() nicht auf den von mir benutzten Port zugreifen kann, da dieser noch immer in Verwendung ist.
Das Problem tritt allerdings nicht auf, wenn man nicht mit Telnet auf den Server zugreift. Jetzt stellt sich also die Frage, wie man nach einem Programmabbruch (STRG-C) den benutzten Port umgehend wieder freigeben kann. Kann mir da jemand auf die Sprünge helfen?
Danke,
Matthias