Aktuelle Zeit: 02.03.2021 15:59

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Unter Linux den Port wieder freigeben
BeitragVerfasst: 05.02.2009 14:11 
Offline

Registriert: 06.06.2008 14:34
Ich hab da ein kleines Problem. Ich hab ne kleine Anwendung geschrieben, die als Server dient. Soweit funktioniert auch alles.

Mein Problem ist nu, dass wenn ich den Prozess kille (mit strg + c tritt auch manchmal das Problem auf), dann brauch Linux ne gewisse Zeit, bis der Port wieder freigegeben wurde (habe keine grafische Oberfläche).

Wie kann ich diese Wartezeit umgehen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 05.02.2009 14:47 
Offline
Benutzeravatar

Registriert: 10.09.2004 20:51
Wohnort: Ansbach
Den Server sauber beenden?

_________________
(\/) (°,,,°) (\/)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 05.02.2009 18:38 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
Nein ich glaube es gibt keine Möglichkeit außer ein reboot bzw. runlevel-wechsel. Ich habe mich das auch schon oft gefragt. Wenn ein Programm crasht will ich doch weiter arbeiten können und nicht für immer blockiert dasitzen.

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 05.02.2009 21:05 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
"strg-c" kann man abfangen, zumindest kenne ich das so unter Windows, und unter Linux wird es das sicherlich auch geben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 06.02.2009 01:40 
Offline

Registriert: 06.06.2008 14:34
slso an "sauber beenden" hab ich auch schon gedacht. Nur wenn aus irgendeinem Grund der Server abschmiert, dann habe ich ein Riesen Problem.

@DarkDragon
Das hört sich nicht gut an. Nur andere Programme können das doch auch. Also wenn ich beispielsweise vsftpd kille, dann kann ich das doch auch sofort wieder starten (also Port 21 ist sofort frei). Demzufolge müsste das doch auch bei meinem Server möglich sein. Die Frage ist nur wie....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 06.02.2009 09:02 
Offline
Benutzeravatar

Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Hallo,

Ich hab das Problem auch, aber auch mit sauberem beenden (also schön brav CloseNetworkServer() aufgerufen). Aber es dauert bis zu einer Minute, bis der Port wieder frei ist... :(

Volker


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 06.02.2009 18:59 
Offline
Benutzeravatar

Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz
Sollte sich mit der Möglichkeit eines Flags für :
Code:
SO_REUSEADDR


lösen lassen - der normale bind aufruf im PB OpenNetworkConnection() benutzt:

Code:
TIME_WAIT


mal fr34k anhauen. ;)

Code:
int sock, ret, on;
struct sockaddr_in servaddr;

/* Create a new stream (TCP) socket */
sock = socket( AF_INET, SOCK_STREAM, 0 ):

/* Enable address reuse */
on = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );

/* Allow connections to port 8080 from any available interface */
memset( &servaddr, 0, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 45000 );

/* Bind to the address (interface/port) */
ret = bind( sock, (struct sockaddr *)&servaddr, sizeof(servaddr) );




Cheers, Thalius

_________________
"...smoking hash-tables until until you run out of memory." :P


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye