PHP 5.4.33 Released

socket_send

(PHP 4 >= 4.1.0, PHP 5)

socket_sendInvia i dati ad un socket collegato

Descrizione

int socket_send ( resource $socket , string $buf , int $len , int $flags )
Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

La funzione socket_send() invia len bytes nel socket indicato da socket dal buffer buf

I valori di flags può essere una qualsiasi combinazione OR dei seguenti:

valori possibili per flags
0x1 Tratta dati OOB (fuori banda)
0x2 Preleva il messaggio
0x4 Ignora il routing, usa l'interfaccia diretta
0x8 I dati comletano il record
0x100 I dati completano la transazione

Vedere anche socket_sendmsg() e socket_sendto().

add a note add a note

User Contributed Notes 2 notes

up
-1
jo at edarta dot be
6 years ago
In php-5.2.0, there's no MSG_EOF anymore. This is not even needed if you make sure you handle writes and close of sockets correctly.
up
-2
KingOfDos
8 years ago
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;
}
?>
To Top