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

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Netzwerk da ja/nein in c

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





BeitragVerfasst am: 27. Jun 2002 14:33   Titel: Netzwerk da ja/nein in c

Wie kann ich performant in C feststellen, ob die Netzwerkverbindung zu einem anderen Rechner da ist. Bitte nicht system(ping...) vorschlagen. Ich möchte es mit C eigenen Sachen versuchen.

Besteht die Möglichkeit hier etwas über RAW Sockets zu machen. Es wäre nett, wenn ein paar Schnipsel Quelltext dabei wären.

Besten Dank!
 

Jochen
Gast





BeitragVerfasst am: 27. Jun 2002 14:49   Titel: Re: Netzwerk da ja/nein in c

In meinem WR Stevens "Programmieren von UNIX-Netzen" ist auf Seite 473 ff. der Source für einen Ping vorhanden; Sourcen zu einem Ping solltest Du eigentlich auch in beliebiger Menge im Netz finden; Debian hat zum Paket iputils-ping beispielsweise den Source vorliegen.

Nachteil Deiner Methode: RAW-Sockets darf unter Linux/UNIX nur root anlegen, also entweder SUID-Bit setzen (Sicherheit!), nur root dranlassen oder eine andere Methode ausdenken.

Jochen
 

sentor
Gast





BeitragVerfasst am: 27. Jun 2002 14:59   Titel: Re: Netzwerk da ja/nein in c

Danke für die Nachricht.

Der Nachteil der RAW Sockets ist mir bekannt. Aber welche andere Methode gibt es denn?

sentor
 

Jochen
Gast





BeitragVerfasst am: 27. Jun 2002 15:13   Titel: Re: Netzwerk da ja/nein in c

Hm, gute Frage. Nur ist die "ping"-Methode auch nicht optimal, da der andere Rechner oder Router auf dem Weg dahin einfach die ICMP-Echo-Requests unter den Tisch fallen lassen kann. Ich denke, es hilt nix anderes als eine normale Verbindung aufzubauen und zu schauen, ob sie innerhalb eines gewissen Zeitrahmens steht. Die Fehlerquellen sind einfach zu vielfältig: Hardware, TCP/IP-Konfiguration, Netzwerk inkl. Router usw. usf.

Jochen
 

sentor
Gast





BeitragVerfasst am: 27. Jun 2002 15:25   Titel: Re: Netzwerk da ja/nein in c

Das mit einer einfachen TCP Verbindung habe ich schon ausprobiert. Hier bin ich auf das folgende Problem gestossen, mache ich mit dem Client ein connect und ist das Netzwerk zum Server weg, so dauert dieses connect ziemlich lange und verlangsamt mithin mein gesamtes Programm. Ist der Netzwerkstecker wieder drin, so ist das Problem nicht mehr da. Eventuell kann man beim connect ja noch eine Option setzten, dass es gleich wieder anwortet und bei fehlender Netzwerkverbindung nicht so lange wartet. Wenn dies ginge, so wäre es eine echte Alternative. Ansonsten kann ich sicherstellen, dass der Server den ping nicht zurückweisst, denn er wird von mit selbst konfiguriert.

sentor
 

Jochen
Gast





BeitragVerfasst am: 27. Jun 2002 16:01   Titel: Re: Netzwerk da ja/nein in c

Gesetzt den Fall, dass die Server beide im gleiche LAN stehen, könnte man ja eine max. connect()-Dauer von beispielsweise 5 Sekunden annehmen. Dann würde man mittels alarm() dafür sorgen, dass in ca. 5 Sekunden ein SIGALRM ankommt und den Prozess aus dem connect() herausreisst. Sollte der connect() schneller sein, direkt mittels "(void)alarm(0);" den gesetzten Alarm wieder löschen.

Wäre das eine Idee?

Jochen
 

sentor
Gast





BeitragVerfasst am: 27. Jun 2002 16:09   Titel: Re: Netzwerk da ja/nein in c

Ich werde das mit dem Alarm mal ausprobieren.

Betsten Dank für die schnellen und guten Tipps.

sentor
 

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