Forum: PC-Programmierung Socketprogrammierung Linux in C


von rolandwunderlich (Gast)


Lesenswert?

Hallo zusammen,

ich beschäftige mich gerade mit Socketprogrammierung in C unter Linux.
Dazu habe ich folgende sehr hilfreiche Seite gefunden:
http://www.fh-gelsenkirchen.de/fb01/homepages/pollakowski/socket/skripte.html

Wenn ich dieses einfache Beispiel nehme und compiliere
http://www.fh-gelsenkirchen.de/fb01/homepages/pollakowski/socket/skripte/ServerHalloWelt.txt
dann läuft es wunderbar.
Wenn ich allerdings den String web_seite um ein paar Sätze erweitere, 
dann funktioniert es nicht mehr.
Compilieren und starten geht logischerweise.
Aber wenn ich ihn über den Browser oder über putty ansprechen will, 
kommt Verbindung abgelehnt(putty) bzw Keine Verbindung möglich(Firefox).

Hat jemand eine Idee, woran das liegt?

Viele Grüße

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

rolandwunderlich schrieb:
> Wenn ich allerdings den String web_seite um ein paar Sätze erweitere,
> dann funktioniert es nicht mehr.

Zeigen.

von Malte S. (maltest)


Lesenswert?

Schuss ins Blaue:

der Code setzt kein SO_REUSEADDR auf die Socket. Könnte es sein, dass 
das Problem nicht durch Deine Änderung auftritt, sondern durch erneutes 
Starten des Programms weniger als (ich glaub 120s) seit Beenden?
Ohne SO_REUSEADDR ist der Port dann nicht wieder verfügbar.
Schneller Test: Prozess beenden, zwei Minuten warten, nochmal versuchen.

Dazu fällt auf:
Dem Code fehlt jegliche Fehlerbehandlung. Das ist ganz aua, besonders 
wenn es um z.B. Netzwerk geht, wo sonst was dazwischenkommen kann.
Sowas gehört von Anfang an da rein.
Überprüge mal den Rückgabewert von bind(). Muss 0 sein, sonst kannste an 
der Stelle schon einpacken.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Ja, es scheint so zu sein, wie Malte geschrieben hat. Hier ist die
Lösung dazu:

  http://www.ibm.com/developerworks/linux/library/l-sockpit/

(Pitfall 3)

von rolandwunderlich (Gast)


Lesenswert?

Tatsächlich, warten bringts. Malte hat Recht. Danke :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.