Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
bind()-Verzweiflung

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Socke
Gast





BeitragVerfasst am: 31. Okt 2002 8:50   Titel: bind()-Verzweiflung

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
Gast





BeitragVerfasst am: 31. Okt 2002 8:52   Titel: Re: bind()-Verzweiflung

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

Typhoon
Gast





BeitragVerfasst am: 02. Nov 2002 22:12   Titel: Re: bind()-Verzweiflung

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
Gast





BeitragVerfasst am: 07. Nov 2002 22:07   Titel: Re: bind()-Verzweiflung

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
 

Socke
Gast





BeitragVerfasst am: 10. Nov 2002 12:03   Titel: Re: bind()-Verzweiflung

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

Thx!
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy