Wake on LAN (v IPv6) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Wake on LAN (v IPv6) – C / C++ – Fórum – Programujte.comWake on LAN (v IPv6) – C / C++ – Fórum – Programujte.com

 

Dogmeat
~ Anonymní uživatel
4 příspěvky
13. 7. 2010   #1
-
0
-

Zdravím,


snažím se vytvořit aplikaci pro Wake on LAN, tato aplikace bere jako vstup MAC adresu a masku podsítě (nebo broadcast).

V IPv4 funguje bez problémů, ale rád bych ji upravil i pro IPv6.

Abych podrobně popsal můj problém:

Pro odeslání magického packetu je potřeba vytvořit socket, aby bylo možné odeslat tento packet pomocí sendto() a k tomu je potřeba jej nastavit buď na AF_INET pro IPv4 nebo pro AF_INET6 pro IPv6 - to není problém.

Ten nastává u nastavení socketu setsockopt(), ve kterém se u IPv4 socketu nastavuje SO_BROADCAST (nenašel jsem jakýkoli jiný příklad nastavení a nemám prozatím možnost ověřit, zda takto lze opravdu poslat Wake on LAN na multicast či unicast).

V IPv6 ovšem nelze použít SO_BROADCAST, protokol toto nastavení neobsahuje a nepodařilo se mi najít, co použít místo něj. Nějaké tipy? Materiálů kolem této problematiky je jako šafránu.

Dále bych potřeboval nějak rozlišit, zda byla vložena maska IPv6 či IPv4 sítě, abych mohl vytvořit ten správný socket - jak na to v c++?

Díky za tipy

Nahlásit jako SPAM
IP: 213.192.14.–
zdenda
~ Anonymní uživatel
257 příspěvků
14. 7. 2010   #2
-
0
-

IPv6 nemá broadcast. Stejného efektu dosáhneš multicastem (ff02::1).
IPv6 adresu poznáš tak, že obsahuje dvojtečku (string.find(':')), ale pochopitelně asi ty adresy neparsuješ sám, tak stačí otestovat návratovou hodnotu konverzní funkce.

Nahlásit jako SPAM
IP: 213.211.51.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
14. 7. 2010   #3
-
0
-

Tak jsem se nakonec pohnul o něco vpřed:

rozlišení IP jsem udělal za pomoci getaddrinfo() a funguje bez problémů.

Podařilo se mi i úspěšně vyzkoušet multicast na IPv4 a taktéž vypadá, že funguje.

U IPv6 ovšem nevím, jak mám nastavit onen multicast. Konfigurace setsockopt(..., SO_MULTICAST, ..) se sice na internetu objevuje, ovšem u mě není podle kompilátoru deklarována a nepodařilo se mi najít, kde se nachází (která hlavičková knihovna ji obsahuje). Na žádnou jinou chybu jsem zatím nenarazil.
Momenálně mám IPv6 ve stavu, kdy neobsahuje vůbec setsockopt(), pouze konstrukce:

sap6.sin6_family = AF_INET6;
inet_pton( AF_INET6, multicast, (void *)&sap6.sin6_addr.s6_addr);
sap6.sin6_port = htons(port);

a následně hned sendto()

Jak doplním ono nastavení multicastu, aby vše správně fungovalo?

Díky

Nahlásit jako SPAM
IP: 213.192.14.–
zdenda
~ Anonymní uživatel
257 příspěvků
14. 7. 2010   #4
-
0
-

Multicast je dán adresou, nemusíš nic nastavovat.

Nahlásit jako SPAM
IP: 213.211.51.–
Dogmeat
~ Anonymní uživatel
4 příspěvky
15. 7. 2010   #5
-
0
-

Díky,

tak tím by mělo být již vše hotové :-)

Nahlásit jako SPAM
IP: 213.192.14.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 103 hostů

Podobná vlákna

Wake on (Wireless) LAN — založil Míša

Ipv6 — založil insider

Problém s LAN — založil Binary Ranger

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý