Click here to Skip to main content
15,891,529 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: proper conversion of unsigned char [16] -> unsigned long [4] Pin
saiyuk6=716-Jul-10 10:40
saiyuk6=716-Jul-10 10:40 
AnswerRe: proper conversion of unsigned char [16] -> unsigned long [4] Pin
Code-o-mat16-Jul-10 9:18
Code-o-mat16-Jul-10 9:18 
GeneralRe: proper conversion of unsigned char [16] -> unsigned long [4] Pin
saiyuk6=716-Jul-10 9:39
saiyuk6=716-Jul-10 9:39 
QuestionFIX protocol: Logon using QuickFix engine Pin
arupsarkar16-Jul-10 7:01
arupsarkar16-Jul-10 7:01 
AnswerRe: FIX protocol: Logon using QuickFix engine Pin
Garth J Lancaster18-Jul-10 1:07
professionalGarth J Lancaster18-Jul-10 1:07 
Questioncurl to return server response Pin
Eli Nurman16-Jul-10 4:40
Eli Nurman16-Jul-10 4:40 
AnswerRe: curl to return server response Pin
Aescleal16-Jul-10 20:18
Aescleal16-Jul-10 20:18 
QuestionMagic Packet Pin
Fareed Rizkalla16-Jul-10 4:04
Fareed Rizkalla16-Jul-10 4:04 
Through some standards an experience, I tried to put this Magic Packet application together.
However it doesn't wake up the machine, nor does the Wake On LAN tutorial on CP succeed in accomplishing the same task.

#include <winsock2.h>
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

void main()
{
	char MAC[13];
	cout << "Enter MAC Address for Machine to wake up:" << endl;
	cin >> MAC;

	cout << "Waking up..." << endl;

	char L = (char)255;
	cout << L << endl;

	WSADATA WS2Info;
	if (!WSAStartup(MAKEWORD(2,2), &WS2Info))
	{
		SOCKET MagicPacket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
		if (MagicPacket != INVALID_SOCKET)
		{
			hostent *ResolveHost;
			char* HostAddress = ""; // Target IP
			ResolveHost = gethostbyname(HostAddress);

			SOCKADDR_IN Host;
			Host.sin_family = AF_INET;
			Host.sin_port = 0;
			Host.sin_addr.s_addr = *((unsigned long*)ResolveHost->h_addr);


			short MACconv[6];
			memset(MACconv, '\0', 6);

			bool FirstDigit = true;
			int Pos = 0;

			for ( int i = 0; i < 12; i++)
			{
				//cout << MAC[i] << Pos << endl;
				switch(MAC[i])
				{
				case '0':
					if (FirstDigit)
					{
						MACconv[Pos] = 00000000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000000 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '1':
					if (FirstDigit)
					{
						MACconv[Pos] = 00010000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000001 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '2':
					if (FirstDigit)
					{
						MACconv[Pos] = 00100000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000010 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '3':
					if (FirstDigit)
					{
						MACconv[Pos] = 00110000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000011 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '4':
					if (FirstDigit)
					{
						MACconv[Pos] = 01000000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000100 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '5':
					if (FirstDigit)
					{
						MACconv[Pos] = 00010000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000001 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '6':
					if (FirstDigit)
					{
						MACconv[Pos] = 01100000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000110 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '7':
					if (FirstDigit)
					{
						MACconv[Pos] = 01110000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00000111 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '8':
					if (FirstDigit)
					{
						MACconv[Pos] = 10000000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001000 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case '9':
					if (FirstDigit)
					{
						MACconv[Pos] = 10010000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001001 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case 'A':
					if (FirstDigit)
					{
						MACconv[Pos] = 10100000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001010 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case 'B':
					if (FirstDigit)
					{
						MACconv[Pos] = 10110000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001011 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case 'C':
					if (FirstDigit)
					{
						MACconv[Pos] = 11000000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001100 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case 'D':
					if (FirstDigit)
					{
						MACconv[Pos] = 11010000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001101 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case 'E':
					if (FirstDigit)
					{
						MACconv[Pos] = 11100000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001110 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				case 'F':
					if (FirstDigit)
					{
						MACconv[Pos] = 11110000 | MACconv[Pos];
						FirstDigit = false;
					}
					else
					{
						MACconv[Pos] = 00001111 | MACconv[Pos];
						FirstDigit = true;
						Pos += 1;
					}
					break;
				}
			}


			short WakeUpMsg[103]; // 103
			
			memset(WakeUpMsg, '\0', 103);

			memset(WakeUpMsg, 255, 6);

			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);

			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);

			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);

			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);
			memcpy(WakeUpMsg, MACconv, 6);

			sendto(MagicPacket, (char*)WakeUpMsg, 128, 0, (SOCKADDR *)&Host, sizeof(Host));
		}
	}
}


Code Free for Non Commercial Use!
AnswerRe: Magic Packet Pin
Richard MacCutchan16-Jul-10 7:07
mveRichard MacCutchan16-Jul-10 7:07 
QuestionHow to send data to a C# App which has WPF control (text box) from VC++ application. Pin
Joseph8216-Jul-10 3:38
Joseph8216-Jul-10 3:38 
AnswerRe: How to send data to a C# App which has WPF control (text box) from VC++ application. Pin
Hristo-Bojilov16-Jul-10 7:24
Hristo-Bojilov16-Jul-10 7:24 
QuestionActive Directory/LDAP. Pin
Mike Doner16-Jul-10 2:47
Mike Doner16-Jul-10 2:47 
AnswerRe: Active Directory/LDAP. Pin
Emilio Garavaglia16-Jul-10 7:05
Emilio Garavaglia16-Jul-10 7:05 
GeneralRe: Active Directory/LDAP. Pin
Mike Doner29-Jul-10 7:59
Mike Doner29-Jul-10 7:59 
GeneralRe: Active Directory/LDAP. Pin
Emilio Garavaglia31-Jul-10 9:33
Emilio Garavaglia31-Jul-10 9:33 
QuestionINT_PTR in VC++ 2010 Pin
rp_suman16-Jul-10 1:43
rp_suman16-Jul-10 1:43 
AnswerRe: INT_PTR in VC++ 2010 Pin
Sauro Viti16-Jul-10 2:16
professionalSauro Viti16-Jul-10 2:16 
AnswerRe: INT_PTR in VC++ 2010 Pin
ThatsAlok18-Jul-10 20:49
ThatsAlok18-Jul-10 20:49 
QuestionHow to focus a message box Pin
rahul.kulshreshtha15-Jul-10 22:06
rahul.kulshreshtha15-Jul-10 22:06 
AnswerRe: How to focus a message box Pin
Eugen Podsypalnikov16-Jul-10 2:06
Eugen Podsypalnikov16-Jul-10 2:06 
GeneralRe: How to focus a message box Pin
rahul.kulshreshtha16-Jul-10 2:36
rahul.kulshreshtha16-Jul-10 2:36 
GeneralRe: How to focus a message box Pin
Cool_Dev16-Jul-10 3:04
Cool_Dev16-Jul-10 3:04 
AnswerRe: How to focus a message box Pin
E.F. Nijboer19-Jul-10 4:56
E.F. Nijboer19-Jul-10 4:56 
QuestionException Pin
Pryabu15-Jul-10 20:31
Pryabu15-Jul-10 20:31 
AnswerRe: Exception Pin
KarstenK15-Jul-10 20:47
mveKarstenK15-Jul-10 20:47 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.