note 58574 added to function.socket-send

From: Date: Tue, 08 Nov 2005 15:41:56 +0000
Subject: note 58574 added to function.socket-send
Groups: php.notes 
Request: Send a blank email to php-notes+get-98260@lists.php.net to get a copy of this message
I changed the Magic Packet function to this. I beleave that an function may not return any value, only an true/false (in the most way's). <?PHP function wol_magic_packet($mac,$addr='255.255.255.255') { //Requirements__________________________ // You need to load the php_sockets.dll (in case of Windows, don't // know @ linux, compile with --socket-support i beleave ). // Otherwise he cannot find the socket_create function //Usage________________________________ // $addr: // You will send and broadcast tho this addres. // Normaly you need to use the 255.255.255.255 adres, so i made it as default. So you don't need // to do anything with this. // $mac: // You will WAKE-UP this WOL-enabled computer, you need to add the MAC-addres here. // //Return________________________________ // TRUE: When socked was created succesvolly and the message has been send. // FALSE: Something went wrong // //Example_1_____________________________ // When the message has been send you will see the message "Done...." // // if ( wol_magic_packet ( '00:00:00:00:00:00' ) ) // echo 'Done...'; // else // echo 'Error while sending'; // //Example_2_____________________________ // To loop more computers: // // $arr = array( // '00:00:00:00:00:00', // '00:00:00:00:00:00' // ); // foreach($arr as $this_id => $this_mac) // if (! wol_magic_packet ( $this_mac )) // echo 'Error while sending to ['. $this_mac .']<br />'."\r\n"; //___________________________________________ //Check if it's an real MAC-addres and split it into an array if (!preg_match("/([A-F0-9]{2}[-:]){5}[A-F0-9]{2}/",$mac,$maccheck)) return false; $addr_byte = preg_split("/[-:]/",$maccheck[0]); //Creating hardware adress $hw_addr = ''; for ($a=0; $a < 6; $a++)//Changing mac adres from HEXEDECIMAL to DECIMAL $hw_addr .= chr(hexdec($addr_byte[$a])); //Create package data $msg = str_repeat(chr(255),6); for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr; //Sending data if ( //If function_exists('socket_create') AND //socket_create exists $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP) AND //Can create the socket $sock_data = socket_connect($sock, $addr, 2050) //Can connect to the socket ) { //Then $sock_data = socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1); //Set $sock_data = socket_write($sock, $msg, strlen($msg)); //Send data socket_close($sock); //Close socket return true; } else //Esle? :P return false; } ?> ---- Manual Page -- http://www.php.net/manual/en/function.socket-send.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+58574 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+58574&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+58574&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#98260) next »