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

C++Builder Discussion :

Reception de packet UDP


Sujet :

C++Builder

  1. #21
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Hello Guyt
    ça me surprend ce que me dis. les deux fonctions que j'utilise sont les mêmes que celles que j'utilise pour mon timer (MMTimer) et que j'ai développé sous XP.
    a tu testé ton composant sous Seven 32 et 64 bits ?
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  2. #22
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    Hello Guyt

    a tu testé ton composant sous Seven 32 et 64 bits ?
    cdlt
    J'ai testé sous Windows 7, Win32. Le programme test communique avec ma tablette Android.

    64 bits, je touche pas à ça.

  3. #23
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut Guyt
    Malheureusement ton Composant ne compile pas avec RadStudio 2010 sous seven

    comme indiqué dans mon précédent Post le fonctions employées timeKillEvent et timeSetEvent ne sont pas compatibles et provoquent un échec lors de la compilation

    je te conseille d'utiliser les coposnats de Fracnçois Piette (OverByte) qui sont à mon point de vue supérieur à Indy et qui sont par ailleurs compatibles avec les nouvelles versions de MS

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  4. #24
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    Salut Guyt
    Malheureusement ton Composant ne compile pas avec RadStudio 2010 sous seven

    comme indiqué dans mon précédent Post le fonctions employées timeKillEvent et timeSetEvent ne sont pas compatibles et provoquent un échec lors de la compilation

    je te conseille d'utiliser les coposnats de Fracnçois Piette (OverByte) qui sont à mon point de vue supérieur à Indy et qui sont par ailleurs compatibles avec les nouvelles versions de MS

    cdlt
    Quand même curieux que ça fonctionne pour moi en Codegear 2009 sous XP et XE2 sous Windows 7 (faut pas oublier d'inclure ws2_32.lib). Mais bon, j'en ferai pas une croisade, si tu dis que ça marche pas en 2010, je te crois, c'est toi l'expert.

    DjmSoftware, ce que je veux c'est de comprendre comment fonctionnent la chose qui m'intéresse, soit la programmation de bas niveau. Mon but n'est donc pas d'avoir une composant UDP, y en a déjà des tonnes, c'est de l'écrire, pour le simple plaisir. Indy, je connais, je m'en servais déjà. Et j'ai pas de doutes que le UDP de François Piette est mieux que le mien.

    Là, je suis content, je comprends un peu mieux les sockets et me rapproche un peu plus du but que je me suis fixé, me faire mon propre composant bluetooth. Que ça existe déjà, je m'en balance, j'ai du plaisir à le faire, c'est tout ce que je veux.

    Au plaisir!

  5. #25
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut Guyt,

    ton composant compile maintenant en ajoutant les fichiers include Manquant
    j'ai testé ton composant,il fonctionne mais nécessite quelques corrections:
    1. Buffer créer avec [] doit être également être détruit par delete [] xx
    2. déclenchement d'exception pas compatible avec la VCL
    3. Changement de Port non pris en compte

    cette liste n'est pas exhaustive
    bon courage pour les corrections
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  6. #26
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    Salut Guyt,

    ton composant compile maintenant en ajoutant les fichiers include Manquant
    j'ai testé ton composant,il fonctionne mais nécessite quelques corrections:
    1. Buffer créer avec [] doit être également être détruit par delete [] xx
    2. déclenchement d'exception pas compatible avec la VCL
    3. Changement de Port non pris en compte

    cette liste n'est pas exhaustive
    bon courage pour les corrections
    Merci pour les bugs.

    Pour 1:

    Là, tu m'apprends quelque chose. Je fais bien un delete fRxBuf, je savais pas qu'il fallait spécifier les "[]".

    Un point pour Java tout de même, y ont pas de "delete"


    Pour 2:

    Pour les exceptions, je savais pas non plus. Aussi, y a comme une ambiguïté dans mon traitement d'erreurs critiques., faut que je repense ça.

    Pour 3:

    Je vais revérifier mon code, mais il me semble que je réinitialise le hardware quand change le "ListenPort" (via la méthode SetListenPort).

    Encore merci!

  7. #27
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    Pour 1:
    Là, tu m'apprends quelque chose. Je fais bien un delete fRxBuf, je savais pas qu'il fallait spécifier les "[]".
    on fait un delete pour libérer la mémoire demandée par un new
    dans le cas d'un tableau

    initiliaisation char * Buffer= new char[1024];
    Libération delete []Buffer;

    Je vais revérifier mon code, mais il me semble que je réinitialise le hardware quand change le "ListenPort" (via la méthode SetListenPort).
    le problème vient du fait que ta méthode RXBuffer est appelée continuellement par ton timer --> Erreur de socket lors d'un changement de port
    tu dois donc tuer ton timer , Changer le Port, Recréer le Timer
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  8. #28
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    le problème vient du fait que ta méthode RXBuffer est appelée continuellement par ton timer --> Erreur de socket lors d'un changement de port
    tu dois donc tuer ton timer , Changer le Port, Recréer le Timer
    cdlt
    Ouais, t'as raison, ça m'avait échappé, merci!

  9. #29
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Bon, j'ai repensé mon approche en ce qui a trait à l'initialisation du socket de réception (qui se fait maintenant seulement au lancement de l'application) ainsi que la gestion d'erreurs lors d'initialisation du socket de réception.

    Au bout du compte, le code est plus simple, mais introduit peut être un bug si le composant est créé dynamiquement (je ne suis pas certain que "Loaded" est appellé, ça reste à vérifier.

    Le code de "TUdpSockit" présenté auparavant reflète la version courante.

    Bon, je vais aller prendre de l'air, y a un beau gros soleil qui m'attend

  10. #30
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Guyt54 Voir le message
    Bon, je vais aller prendre de l'air, y a un beau gros soleil qui m'attend
    (Tu as bien de la chance)

  11. #31
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    Bon, j'ai repensé mon approche en ce qui a trait à l'initialisation du socket de réception (qui se fait maintenant seulement au lancement de l'application) ainsi que la gestion d'erreurs lors d'initialisation du socket de réception.

    Au bout du compte, le code est plus simple, mais introduit peut être un bug si le composant est créé dynamiquement (je ne suis pas certain que "Loaded" est appellé, ça reste à vérifier.

    Le code de "TUdpSockit" présenté auparavant reflète la version courante
    le Composant est toujours chargé dynamiquement, la form sur laquelle est déposé ton composant appelle le constructeur de ton composant

    ton Composant pourrait par exemple se référer au composant Standard de la VCL en intégrant une property Active qui te permettrait d'initialiser ton socket et le Timer pour ton Polling

    une manière simple de créer des exceptions est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    throw (Exception("Mon Message d'erreur"));
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  12. #32
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    Salut


    le Composant est toujours chargé dynamiquement, la form sur laquelle est déposé ton composant appelle le constructeur de ton composant

    cdlt
    Salut

    Je ne sais pas si on parle de la même chose.

    Je me demandais si la méthode "Loaded" de TComponent est appelée quand même si le composant est créé dynamiquement plutôt que d'être déposé sur la forme, i.e.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       TUdpSocket* socket = new TUdpSocket(this) ;
    Je viens de vérifier et la réponse est non.

    Donc, j'ai un petit correctif à effectuer.
    [/code]

Discussions similaires

  1. Comment connaitre la taille d'un packet UDP ?
    Par Djobird dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 16/07/2009, 16h58
  2. probleme de reception de message udp apres envoi
    Par zarbiman dans le forum Développement
    Réponses: 2
    Dernier message: 12/12/2007, 23h21
  3. Problème de packet UDP avec les routeurs
    Par Thixomag dans le forum Développement
    Réponses: 16
    Dernier message: 11/11/2007, 20h38
  4. Checksum d'un packet udp
    Par sebastien.mz dans le forum Réseau
    Réponses: 3
    Dernier message: 12/05/2007, 15h00
  5. récupérer la taille d'un packet UDP
    Par beLz dans le forum Réseau
    Réponses: 17
    Dernier message: 07/03/2007, 11h50

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