Page 1 sur 1

Envoyer une trame Ethernet sans protocole (IP/UDP/TCP/...)

Posté : 20 févr. 2015, 10:46
par setthh
Bonjour,

j'utilise un serveur PHP pour administrer une plateforme composé d'ordinateurs et équipements connectés sur un réseau local.
Mais un petit nouveau n'a pas implémenté les couches protocolaire au dessus de MAC :evil:

Du coup je dois envoyer (puis recevoir) des trames dans un format propriétaire. :cry:
Le format est donc le suivant :
En-tête MAC - mes 46 octects de données brut - CRC MAC.

Je pense utiliser les sockets (à mon que la bibliothèque Curl soit la bonne idée, peu m'importe).

J'ai commencé cette fonction mais je ne comprends pas comment fonctionne le format RAW ?
function request_data($str)
{
    // Partie Emission
    // ****************
    $sock_transmit = socket_create(AF_INET, SOCK_RAW, 1);
    echo "</br>socket_create :".$sock_transmit; // pour le debug
    // Option
    // ------
    // domain = AF_INET|AF_INET6|AF_UNIX
    // type = SOCK_STREAM|SOCK_DGRAM|CK_SEQPACKET|SOCK_RAW|SOCK_RDM
    // protocol = SOL_TCP|SOL_UDP|


    $str = hex2bin($str);
    
    $varSenTo=socket_send($sock_transmit, $str, strLen($str), 0); 
    //socket_sendto($sock_transmit, $str, strlen($str), 0, '192.168.0.1', 40236); // version udp qui fonctionne


     echo "</br>valeur de varSenTo : ".$varSenTo."<br />";
     echo "</br>valeur de l'erreur : ". socket_strerror(socket_last_error()) ."<br />";
     socket_close($sock_transmit);
     echo "</br>Fin d'envoi du msg<br />";
}
Pourriez-vous m'aider SVP ?
Merci d'avance !
setthh

Re: Envoyer une trame Ethernet sans protocole (IP/UDP/TCP/..

Posté : 20 févr. 2015, 12:33
par Genova
Salut,

Les sockets sont assez peu utilisés en PHP donc pas sur que tu trouves beaucoup d'aide sur ce sujet ici, tente ta chance sur stackoverflow.

Autrement, l'utilisation de socket_create() semble parfaitement adaptée, oublie CURL ;)

++