2009-08-23 11 views

Antwort

2

Nicht. Verwenden Sie write(), verwenden Sie sendto().

Wenn Sie PF_PACKET, SOCK_DGRAM, verwenden, dann erstellt es die Link-Layer-Header für Sie, was normalerweise das ist, was Sie wollen. Sie müssen jedoch immer noch das höhere Protokoll erstellen, das Sie verwenden.

Sie geben eine sockaddr_ll im Zielparameter an. Sie können eine Link-Layer-Unicast-Adresse, Multicast-Adresse oder Broadcast-Adresse angeben.

+0

Ist es wichtig, welchen Host ich mit sendto() spezifiziere, wenn der IP-Header das Ziel enthält – computergeek6

+0

Ja absolut; Wenn Sie ein IP-Paket senden, müssen Sie es immer noch an die entsprechende Link-Layer-Adresse senden, wenn Sie PF_PACKET, SOCK_DGRA, verwenden. Wenn Sie rohe IP-Pakete senden möchten, empfehle ich stattdessen, PF_INET, SOCK_RAW zu verwenden. – MarkR

+0

Wenn ich PF_INET, SOCK_RAW, verwende, müsste ich den Socket binden? – computergeek6

Verwandte Themen