9 Stimmen

Wie kann ich ein UDP-Paket von einer bestimmten Schnittstelle unter Linux senden?

Wie sende ich ein UDP-Paket von einer spezifisch Schnittstelle auf Linux mit C? Sollte ich bind verwenden? Ist es möglich, UDP von einer Schnittstelle zu senden, die keine IP-Adresse hat?

Danke.

9voto

Oswald Punkte 30371

Bindung verwenden. Sie können keine UDP-Pakete über eine Schnittstelle senden, die keine IP-Adresse hat, da UDP das Internet-Protokoll verwendet und das Internet-Protokoll eine IP-Adresse erfordert.

7voto

Hasturkun Punkte 33718

Sie können einen Socket an eine bestimmte Schnittstelle binden, indem Sie die SO_BINDTODEVICE Socket-Option, allerdings sind dafür Root-Rechte erforderlich.

Alternativ können Sie auch die IP_PKTINFO und die Option sendmsg für das Senden, die Einstellung der in_pktinfo 's ipi_ifindex auf den Index Ihrer Schnittstelle.

0voto

Stephane Punkte 1

Sie müssen die Socket-Option IP_MULTICAST_IF verwenden.

Siehe hier: Multicast-HOWTO-6.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X