2009-08-23 5 views

Répondre

2

Ne pas. utilisez write(), utilisez sendto().

Si vous utilisez PF_PACKET, SOCK_DGRAM, alors il construit pour vous les en-têtes de la couche liaison, ce qui est normalement ce que vous voulez. Cependant, vous devez toujours construire le protocole le plus élevé que vous utilisez.

Vous spécifiez un sockaddr_ll dans le paramètre de destination. Vous pouvez spécifier une adresse de monodiffusion de couche liaison, une adresse de multidiffusion ou une adresse de diffusion.

+0

L'hôte spécifié avec sendto() est-il important si l'en-tête IP contient la destination – computergeek6

+0

Oui absolument; Si vous envoyez un paquet IP, vous devez quand même l'envoyer à l'adresse de couche liaison appropriée si vous utilisez PF_PACKET, SOCK_DGRA. Si vous voulez envoyer des paquets IP bruts, je vous recommande d'utiliser plutôt PF_INET, SOCK_RAW. – MarkR

+0

Si j'utilise PF_INET, SOCK_RAW, est-ce que je devrais lier le socket? – computergeek6

Questions connexes