Frage

Ich habe Computer Networking im letzten Semester und habe einige C-Programmierung unter Linux (gcc) für meine Projekte. Ein extrem langwierig, was ich in Betrieb gehalten war, wenn mein Programm abgestürzt oder ins Stocken geraten (was ich dann müsste Strg + C getroffen, es zu töten), würde das Netzwerk-Port noch bleiben offen für eine Minute oder so. Also, wenn ich das Programm wieder sofort ausführen will, würde ich zuerst in die Header-Datei gehen, den Port ändern, das Programm neu schreiben, und dann ist es endlich laufen. Offensichtlich ist dies sehr mühsam wird sehr schnell.

Gibt es eine Möglichkeit, es zu konfigurieren, in denen die Port sofort so bald freigegeben wird, wenn der Prozess abgebrochen wird? Entweder über irgendeine Einstellung in Linux oder in der Make-Datei für mein Programm, oder auch programmatisch in C?

Edit:. Ich beziehe mich auf, wenn Sie einen Server und die Wahl eines bestimmten Port zu schreiben, das Programm Host

War es hilfreich?

Lösung

Stellen Sie die die Option SO_REUSEADDR am Sockel an.

int yes = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));

Beej Guide to Network Programming .

Andere Tipps

ich wette, es ist etwa zwei Minuten :) Wie @Cogsy erwähnt, ist die SO_REUSEADDR Socket-Option dein Freund. Machen Sie sich mit TCP Zuständen vertraut, es ist TIME_WAIT Zustand, dass Sie Probleme verursacht:

 

Ich gehe davon aus dem Programm Sie schreiben ein Server, so dass Sie einen bekannten Port verwenden müssen. Wenn das der Fall ist, sollten Sie die SO_REUSE_ADDR Option auf dem Sockel verwenden, wie von Cogsy hingewiesen.

Wenn auf der anderen Seite sind Sie einen Client-sw schreiben, dann sollten Sie sich vermeiden, einen bestimmten Port wählen, so dass das System Ihnen einen gelegentlichen zur Hand.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top