IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

socket_read au délà du réel


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut socket_read au délà du réel
    Bonjour,

    je réalise mon premier projet en php.
    On utilise en entreprise une base de données (ancienne et fermée) où nous n'avons pas d'ouverture avec d'autres langages hormis avec un ancien langage spécifique
    L’accès au fichier se fait via un programme serveur qui s'occupe des partages.

    En décortiquant les échanges avec un soft réseau qui capture les paquets, j'ai réussi avec une classe Python à accéder à notre base de données et faire des requêtes.

    Maintenant je voudrais ouvrir cette base vers le web..
    Donc j'essaie d'implémenter mon script python en php.
    Je parviens à réaliser une socket en php sans trop de difficultés, la connexion se fait bien avec le serveur.
    Par contre, les données que je recois via socket_read ne correspond pas à ce que je devrais avoir..

    Je m'explique :
    Je récupere 32 octets du serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $recup = socket_read($this->sock,1000);
    En php, en décortiquant j'ai ceci : (en entier)
    16 0 96 0 0 0 0 0 0 0 0 0 0 0 0 0
    2 0 118 0 0 0 0 0 0 0 0 0 0 0 0 0

    Or, je devrais avoir des valeurs au 22 et 23e octet
    En tracant avec ethereal les paquets, réellement j'ai ceci:
    16 0 96 0 0 0 0 0 0 0 0 0 0 0 0 0
    2 0 2 0 0 137 1 0 0 5 0 0 0 0 0 0

    J'essaie de voir avec la fonction unpack pour décortiquer mais je m'en sors pas.

    Pouvez vous m'éclairer???

    Je bloque je m'en sors pas , pour mon premier projet php c'est pas top pour le moment...

    Je suis sous windows 7 64 bits, php 5.4.3

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 221
    Points
    20 221
    Par défaut
    Je récupere 32 octets du serveur
    Pourquoi en lire 1000 alors ?

    Commence par lire exactement ce dont tu as besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recup = socket_read($this->sock,32);
    Après si effectivement tu ne reçois que du binaire , il faut comme tu t'en est rendu compte , utiliser unpack

    Et en cadeau bonus un petit wrapper des socket php que j'utilise souvent : https://github.com/grunk/Pry/blob/ma...cket.class.php
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    1000 est une coquille en effet, j'avais mis 32 à la base puis 1000 pour tester, mais le résulat est le même pour le moment.

    Je vais voir ce que vous me proposez

    merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    Probleme resolu

    Le socket_read fonctionne comme il faut désormais, j'avais une lecture de socket plus tôt dans le code avec socket_recv..
    socket_read me renvoyait les mêmes octets que socket_recv.
    Du coup j'ai remplacé mon socket_recv par socket_read et ca fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VESA - Mode réel / protégé / EMS-XMS
    Par zdra dans le forum x86 16-bits
    Réponses: 35
    Dernier message: 21/08/2010, 10h39
  2. [EPROM] Adressage en mode réel
    Par ruda.tom dans le forum Assembleur
    Réponses: 16
    Dernier message: 05/11/2003, 23h56
  3. cubes temps réel en ROLAP
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/07/2003, 16h36
  4. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15
  5. [MaskEditBox] Affecter avec un réel
    Par fikou dans le forum Général VBA
    Réponses: 6
    Dernier message: 16/09/2002, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo