(geglaubte?) Probleme mit bind()-Aufruf unter Linux

13/08/2011 - 09:09 von Lewin Bormann | Report spam
Hallo,
nachdem ich mich in den letzten Tagen ein wenig mit den Socket-Aufrufen unter
Linux beschàftigt hatte (v.a. mit [1], wenn auch ein wenig alt), ist mir etwas
aufgefallen.
Wenn ich meinen kleinen Server [2] starte, der den Zweck hat, einfach auf einem
gegebenen Port zu lauschen, und bei Verbindung Text zum Client zu schicken
sowie sich dann zu beenden (eigentlich unsinnig, sollte andersrum sein),
gelingt mir das Starten auch ohne Fehlermeldung, allerdings lauscht er
(anscheinend?) nicht auf dem gegebenen Port (im Beispiel 25000), zu sehen in
Text [3]. Fehlermeldungen kommen, wie gesagt, keine. Auch das Starten des
Servers als root bringt das gleiche Ergebnis. Kennt Ihr das oder könnt ihr mir
sonst helfen? Es kann gut sein, dass ich irgendwo im Code einen Fehler gemacht
habe...

Danke,
LB

[1] http://openbook.galileocomputing.de...de413.html
[2] http://paste.debian.net/126067/
[3] http://paste.debian.net/126069/
Private Mails an news~lewin-bormann.de (~=@)
 

Lesen sie die antworten

#1 Ralf Döblitz
13/08/2011 - 10:42 | Warnen spam
Lewin Bormann schrieb:
Hallo,
nachdem ich mich in den letzten Tagen ein wenig mit den Socket-Aufrufen unter
Linux beschàftigt hatte (v.a. mit [1], wenn auch ein wenig alt), ist mir etwas
aufgefallen.
Wenn ich meinen kleinen Server [2] starte, der den Zweck hat, einfach auf einem
gegebenen Port zu lauschen, und bei Verbindung Text zum Client zu schicken
sowie sich dann zu beenden (eigentlich unsinnig, sollte andersrum sein),
gelingt mir das Starten auch ohne Fehlermeldung, allerdings lauscht er
(anscheinend?) nicht auf dem gegebenen Port (im Beispiel 25000), zu sehen in
Text [3]. Fehlermeldungen kommen, wie gesagt, keine. Auch das Starten des
Servers als root bringt das gleiche Ergebnis. Kennt Ihr das oder könnt ihr mir
sonst helfen? Es kann gut sein, dass ich irgendwo im Code einen Fehler gemacht
habe...



man network byte order

Du mußt den Port eben in network byte order angeben, was nicht unbeidngt
mit der host byte order übereinstimmt. Konvertierung ist in diesem Fall
z.B. mit htons() aus arpa/inet.h möglich.

25000 = 0x61a8
43105 = 0xa861

Ralf
Wenn man wie ich die 25 bereits erreicht hat, dann hat man doch bis auf
Elterngewesensein, ein erfuelltes Leben und ein Leben schon alles gehabt
;)
  – Urs [Ayahuasca] Traenkner in dasr

Ähnliche fragen