Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Linux/Unix ::  Verlust der Netzwerkverbindung beim UDP Multicasting unter Linux vs. OSX     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
PhilippM
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.09.2005
Beiträge: 414
Beitrag PhilippM Mitglied 12:33:30 31.08.2010   Titel:   Verlust der Netzwerkverbindung beim UDP Multicasting unter Linux vs. OSX            Zitieren

Hallo Leute,

ich habe einen Multicast-fähigen Sender und einen Empfänger mithilfe von Boost.Asio programmiert und teste gerade verschiedene Use-Cases auf Linux und auf Mac OSX.

Dabei ist mir aufgefallen, dass sich Linux und OSX beim Verlust der Netzwerkverbindung (Kabel abziehen) grundsätzlich unterschiedlich verhalten.

Und zwar bekomme ich beim Verlust der Netzwerkverbindung beim send_to() unter Linux einen Fehler zurück: Asio meldet "Network is unreachable".
Unter OSX hingegen bekomme ich überhaupt keinen Fehler. send_to() gibt weiterhin die korrekte Anzahl von bytes als geschrieben zurück.

Wenn ich das Netzwerkkabel dann wieder dranstecke, fängt Linux an, wieder fröhlich weiterzusenden, sobald es eine IP-Adresse hat.
Bei OSX hingegen kommt dann (und zwar erst, wenn das Netzwerkkabel steckt!) ein Fehler "Network is unreachable" so lange, bis er wieder einen DHCP-Lease hat. Sobald die IP-Adresse dann gesetzt ist, sendet auch OSX wieder fröhlich weiter.

Was mir noch aufgefallen ist: Der Empfänger ist auf INADRR_ANY gebindet (bevor das joingroup gemacht wird). Unter Linux empfängt er im Falle des abgesteckten Netzwerkkabels weiterhin die abgesetzten Pakete über den Loopback-Adapter. Unter OSX tut er das nicht, da empfängt er garnix (während der Sender KEINEN FEHLER meldet).

Ist jemand in Sachen Netzwerkprogrammierung unter OSX so bewandert, dass er mir erklären kann, warum es sich so grundlegend anders verhält?

Gruß,
Phil

_________________
Entwickler von X-Plane und MSFS plugins.
Mein Blog über X-Plane-Entwicklung
Member of http://vas-project.org (Linux-Portierung und X-Plane Anbindung)


Zuletzt bearbeitet von PhilippM am 12:34:27 31.08.2010, insgesamt 1-mal bearbeitet
C/C++ Forum :: Linux/Unix ::  Verlust der Netzwerkverbindung beim UDP Multicasting unter Linux vs. OSX   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.