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
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.
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.