UDP paketini C kullanarak özel arayüzünden nasıl gönderirim? Bağlantımı kullanmalı mıyım? IP adresi olmayan arayüzden UDP göndermek mümkün mü?UDP paketini Linux'ta belirli bir arabirimden nasıl gönderirim?
Teşekkürler.
UDP paketini C kullanarak özel arayüzünden nasıl gönderirim? Bağlantımı kullanmalı mıyım? IP adresi olmayan arayüzden UDP göndermek mümkün mü?UDP paketini Linux'ta belirli bir arabirimden nasıl gönderirim?
Teşekkürler.
Sen SO_BINDTODEVICE
soket seçeneğini kullanarak belirli bir arayüze bir soket bağlayabilir, ancak bu kök ayrıcalıkları gerektirir.
Alternatif olarak, ayar, IP_PKTINFO
seçeneğini ayarlayın ve göndermek için sendmsg
kullanabilirsiniz in_pktinfo
'ın ipi_ifindex
arayüzünüze endeksine.
Bağlantıyı kullanın. UDP paketlerini IP adresi olmayan bir arabirim üzerinden gönderemezsiniz, çünkü UDP Internet Protokolünü kullanır ve Internet Protokolü bir IP adresi gerektirir.
Sen yuva seçeneği IP_MULTICAST_IF kullanmak gerekir.
Buraya bakın: Multicast-HOWTO-6.html
değil sadece? (Ayrıca, bir adres gerektiriyor gibi görünüyor) – Hasturkun
Bilmiyor musunuz: çapraz platform yolu mu? Örneğin. Windows® üzerinde bu şekilde çalışır mı? –
@ Hi-Angel: Denemedim, ama görünüşe göre ['IPPROTO_IP'] 'i kullanabilirsiniz (http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586 (v = vs .85) Windows'da .aspx) 'IP_UNICAST_IF' soket seçeneği. Bu seçenek bir arayüz endeksi alır ve mevcut Linux sistemleri üzerinde de çalışmalıdır (2012'de eklenmiştir ve Linux v3.4'te mevcuttur). – Hasturkun
Hmm, ilginç… GNU/Linux belgelerinde seçenek hakkında bir şey bulamadım, ancak WINE projesine yardımcı olmak için eklendiğini [kısa not] (http://kernelnewbies.org/Linux_3.4) buldu. Umarım WINE projesi bunun farkındadır: D –