WakeOnLAN z Girhub ve Visual Studiu? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

WakeOnLAN z Girhub ve Visual Studiu? – C / C++ – Fórum – Programujte.comWakeOnLAN z Girhub ve Visual Studiu? – C / C++ – Fórum – Programujte.com

 

Marek
~ Anonymní uživatel
523 příspěvků
21. 4. 2026   #1
-
0
-

Tak jsem si cvičně stáhl https://github.com/yyl-20020115/WakeOnLAN

Ve Visual Studiu 2026 vytvořil projekt konzolové aplikace v C

Nakopiroval WakeOnLAN.c a getopt.h

Na začátek kodu přidal 


#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS


A kupodivu se to usěšně přeložilo bez jediné chyby nebo varování.
Krapet problém je, že to jaksi nefunguje

WakeOnLAN 00:11:22:33:44:55 
WakeOnLAN 00:11:22:33:44:55 192.168.1.255

PC s MAC 00:11:22:33:44:55 neprobudí, ale pokud použiji bisnrku z daného projektu v0.3 tak

WakeOnLAN 00:11:22:33:44:55 192.168.1.255 PC probudí.

No a popravdě ani netušim jak tohle ladit?

Pokud někdo poradí nebo vidi v čem je problém?

Nahlásit jako SPAM
IP: 2a12:a800:11:1:124:198:131:57...–
Karel
~ Anonymní uživatel
170 příspěvků
21. 4. 2026   #2
-
0
-

To psal nějaký indický programátor a uvedl to jako dodo dodělej doma.


sendto(udpSocket, (char*)&packet, sizeof(unsigned char) * 102, 0, (struct sockaddr*)&udpServer, sizeof(udpServer));

//to  nefunguje, tohle ANO

sendto(udpSocket, packet, sizeof(unsigned char) * 102, 0, (struct sockaddr*)&udpServer, sizeof(udpServer));
 

Ono to je celé ujeté ve funkci SendMagicPacket vidim


if (broadcastAddress && strlen(broadcastAddress) > IPV4_ADDR_LEN)

{

printf("Invalid broadcast address.\n"); return 1;

}

else

{

broadcastAddress = "255.255.255.255";

}
 

Jinak řečeno když jako parametr zadáté chybnou broadcastAddress skončí to chybou a když zadáte jakoukoliv správnou broadcastAddress je tak jako tak nahrazena 255.255.255.255
Celkem zajimavy sw  .

Nahlásit jako SPAM
IP: 31.30.163.–
Karel
~ Anonymní uživatel
170 příspěvků
21. 4. 2026   #3
-
0
-

Sakra jsem se upsal, správný kod je 

sendto(udpSocket, (char*)packet, sizeof(unsigned char) * 102, 0, (struct sockaddr*)&udpServer, sizeof(udpServer));

Ivkdyž nejšpíš to bude fungovat i s packet bez přetypování, on to překldač pozná,ale čistě technicky daný parametr je typu const char *buf,

Nahlásit jako SPAM
IP: 31.30.163.–
Marek
~ Anonymní uživatel
523 příspěvků
23. 4. 2026   #4
-
0
-

Dík, pokud jsem správně pochopil tak (char*)&packet a (char*)packet sice obsahují stejnou adresu, ale (char*)packet ukazuje na první byte a zvětšuje se o 1 byte a (char*)&packet ukazuje na pole a zvětšuje se o velikost pole.

Jinak mi ještě uniká jedna věc.

funkce

static int SendMagicPacket(const unsigned char* packet,const char* broadcastAddress,const char* _interface) {..
)

const char* broadcastAddress  říká. že funkci předáváme ukazatel na literár, tedy řetězec, který nelze v těle funlce měnit.

Pokud ano tak proč je v těle funkce

broadcastAddress = "255.255.255.255";

a jak to, že překladač neřve:?

Nahlásit jako SPAM
IP: 2001:67c:289c:4::82...–
Karel
~ Anonymní uživatel
170 příspěvků
24. 4. 2026   #5
-
0
-

#4 Marek
On je constantní literál ten řetězec ne ten ukazatel a tak překladač v pohodě vygeneruje nový ukazatel na jinou adresu na které je ten druhý řetězec a celkem není proč by řval

Pokud si vypišete adresu ukazatele 

před 

broadcastAddress = "255.255.255.255";

a po budou ukazovat na dvě místa v paměti s různými adresami.

Nahlásit jako SPAM
IP: 31.30.163.–
remmidemmi0
Věrný člen
28. 4. 2026   #6
-
0
-

Hm, to jméno autora GramThanos na GitHubu je řecký jméno, ne indický jméno. Ale o to nejde, na GitHubu je málokdy něco dotažený do konce, kompletní. Většinou to jsou polotvary a většinou je to nedostatečně zdokumentovaný. Programátoři trpí zvláštní nemocí. Každý programátor si myslí, že všichni mají stejný počítač, hardware jako on, stejný OS jako on, stejný vývojový systém a tak netřeba napsat na čem a pro jaký hardware vytvořil jeho dílo. Přece to všichni poznají anebo ať si pořídí křišťálovou kouli.

Představ si, že by hardwaráři tvořili projekty tak laxním způsobem jako to dělají softwaráři. Prostě tu by zapomenuli blokovací kondenzátor, jinde tranzistor, a někde jinde by si zase spletli hradlo. V popisu by schema neodpovídalo skutečnému hardware a na seznam součástek by se vykašlali (přece to každý pozná), stejně jako by neuvedli popis vstupů a výstupů na konektorech (každý si to domyslí). To by byl mazec, co?

Problém proč ti nefunguje software z GitHubu nemusí být v tom, že je chybný, ale prostě nejspíš proto, že autor měl asi jiný hw, jiný OS, jiný kompilátor než ty. Přirozeně si pak musíš jeho projekt upravit. Anebo nekopíruj cizí projekty a vytvoř si tvůj vlastní.

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

Přidej příspěvek

×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, 7 hostů

Podobná vlákna

Kódování ve Visual Studiu — založil Anonymní uživatel

TextBox ve visual studiu — založil Jouda

Java ve visual studiu — založil deviler

Moderátoři diskuze

 

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