bind()-Verzweiflung

Post Reply
Message
Author
Socke

bind()-Verzweiflung

#1 Post by Socke »

Ich habe ein Problem mit bind(), das höchstwahrscheinlich auf einen Programmfehler zurückzuführen ist. Dummerweise verhält sich bind() aber sehr seltsam.

Also: ich habe zwei Serveranwendungen, die auf dem gleichen Sourcecode basieren, aber mit Hilfe von Defines unterschiedlich erzeugt werden. Bei der einen Anwendung funktioniert bind() perfekt. Bei der anderen - bei der ich eigentlich für socket() und bind() keinen Unterschied sehe - liefern diese beiden befehle _jeweils_ als Rückgabewert 0, errno wird auch nicht gesetzt, aber der Port, mit dem ich bind()en wollte, exsitiert hinterher nicht. Ich kann mit diesem nicht connecten und nmap sagt auch, der Port ist nicht da. Ein tauschen der Portnummern (so dass ich hier mal den Port nehme, den die erste Anwendung erfolgreich bind()en kann) hilft auch nicht.

Hat eventuell jemand eine Idee, unter welchen Bedingungen socket()/bind() keinen Error zurückliefern, aber trotzdem nicht funktionieren?

Interessantwerweise ist das kein Linux-spezifisches Problem, unter Windows macht die zweite Serverapplikation den gleichen Mist...

Thx!

*verzweifel*

Socke

Re: bind()-Verzweiflung

#2 Post by Socke »

Kleine Korrektur: socket() liefert natürlich nicht 0 sondern einen gültigen Descriptor >0 zurück.

Typhoon

Re: bind()-Verzweiflung

#3 Post by Typhoon »

Welchen Wert gibt denn listen() zurück?

Falls du das garnicht aufgerufen hast solltest du es nach bind() aufrufen. Mehr info in listen(2).

Socke

Re: bind()-Verzweiflung

#4 Post by Socke »

listen() wird aufgerufen, gibt 1 zurück und lässt errno unverändert. Lediglich ein anschließendes accept() liefert -1 und setzt errno auf 22, was sicher damit zusammenhängt, dass bind() klammheimlich keinen Serversocket erzeugt hat <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">

Socke

Re: bind()-Verzweiflung

#5 Post by Socke »

Ich hab's gefunden - die Geschichte mit listen() war der richtige Denkanstoß! Es wurde im Falle des 2. Servers auf Grund einiger anders gesetzter Variablen nämlich _doch nicht_ aufgerufen - und schon klappt es mit dem Server nicht <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Thx!

Post Reply