PHP 7.2.7 Released


(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_sendEnvoie des données à un socket connecté


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

La fonction socket_send() envoie len octets au socket socket depuis le buffer buf.

Liste de paramètres


Une ressource de socket valide, créée par la fonction socket_create() ou la fonction socket_accept().


Un buffer contenant les données qui seront envoyées sur l'hôte distant.


Le nombre d'octets qui doivent être envoyés à l'hôte distant depuis le buffer buf.


La valeur du paramètre flags peut être une combinaison des drapeaux suivants, joints par un OU binaire (|).

Valeurs possibles pour flags
MSG_OOB Traite les données OOB (out-of-band).
MSG_EOR Indique un marqueur d'enregistrement. Les données envoyées complètent l'enregistrement.
MSG_EOF Termine l'envoi via le socket et inclue une notification appropriée à la fin des données envoyées. Les données envoyées complètent la transaction.
MSG_DONTROUTE Ignore le routage, utilise une interface directe.

Valeurs de retour

Retourne le nombre d'octets envoyés, ou FALSE si une erreur survient.

Voir aussi

  • socket_sendto() - Envoie un message à un socket, qu'il soit connecté ou pas

add a note add a note

User Contributed Notes 2 notes

12 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).
function wol_magic_packet($mac,$addr='') {
    //    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
    //    $addr:
    //        You will send and broadcast tho this addres.
    //        Normaly you need to use the 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.
    //    TRUE:    When socked was created succesvolly and the message has been send.
    //    FALSE:    Something went wrong
    //    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';
    //    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))
$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;
jo at edarta dot be
10 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.
To Top