Je sèche sur un problème quelque peu particulier et je cherche un petit coup de pouce.
Ce que je cherche à faire est une sorte de serveur en un script Php qui écoute sur un port et répond en fonction des data reçues. Mais il doit lire le datagramme brut.
Exemple:
1° Le device distant envoie en TCP sur le port 2222 le datagramme suivant (tel que vu par Wireshark par exemple): 000f333533393736303133373134363734
2° Le serveur répond: 0x01 (en hexa)
Je sais que au point 1° le 000f est la longueur des infos envoyées en HEXA et le reste les octets en hexa qui contiennent des données. La longueur est variable.
Comment à l'aide des fonction socket, obtenir la trame IP elle-même et non pas sont interpretation???
En effet, le code suivant me donne pour la séquence du point 1 un résultat qui ne me convient pas (353976013714674) car les octets doivent être interpretés parfois ensemble et parfois séparément:
Code : Tout sélectionner
// On crée la socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// On le lie, ici sur le port 2222
socket_bind($socket, '0.0.0.0', 2222);
// On la fait écouter
socket_listen($socket, 5);
// On attend qu'un client se connecte
$client = socket_accept($socket);
// On lit un paquet de réponse du client
$response = socket_read($client, 17, PHP_BINARY_READ);
echo"recu=".$response."\n"; //353976013714674
Je ne vois pas comment obtenir la trame TCP en direct et ensuite lui répondre en fonction des données reçues en Hexa.
Une idée, ou une piste serait vraiment bienvenu.
Nico