Verhalten von bind

21/07/2010 - 12:40 von Curtis Newton | Report spam
Hallo,

ich programmiere gerade einen kleinen TCP/IP-Server. Jetzt bin ich auf
ein Verhalten von bind gestossen, was ich mir nicht erklàren kann.

Generell ist es so, dass der Server mit bind sich an eine Adresse bindet
und dann mit listen auf Clients wartet. Wenn einer kommt, wird der
abgehandelt, der Socket geschlossen, fertig.

Jetzt ist das Ergebnis von bind abhàngig von dem, was der Server als
letztes getan hat. Hat er mit recv was empfangen, klappt ein bind an den
Port sofort wieder. Ist als letztes ein select mit timeout abgelaufen,
muss ich 60 Sekunden warten, bevor es mit den binden wieder klappt.

Was kann das sein? System ist Linux.
Bye
 

Lesen sie die antworten

#1 Volker Birk
21/07/2010 - 12:55 | Warnen spam
Curtis Newton wrote:
ich programmiere gerade einen kleinen TCP/IP-Server. Jetzt bin ich auf
ein Verhalten von bind gestossen, was ich mir nicht erklàren kann.
Generell ist es so, dass der Server mit bind sich an eine Adresse bindet
und dann mit listen auf Clients wartet. Wenn einer kommt, wird der
abgehandelt, der Socket geschlossen, fertig.
Jetzt ist das Ergebnis von bind abhàngig von dem, was der Server als
letztes getan hat. Hat er mit recv was empfangen, klappt ein bind an den
Port sofort wieder. Ist als letztes ein select mit timeout abgelaufen,
muss ich 60 Sekunden warten, bevor es mit den binden wieder klappt.



Das hört sich an, als machtest Du mehrfach bind() steht nur einmal und
dann immer wieder accept().

Ich hab für eine kleine Schulung mal einen trivialen Beispiel-TCP-Server
gehackt, Du findest den Quellcode hier:

<http://fdik.org/server.c>

Vorsicht: das ist nicht Produktivcode-Qualitöt, er zeigt nur das
Prinzip.

Viele Grüsse,
VB.
Bitte beachten Sie auch die Rückseite dieses Schreibens!

Ähnliche fragen