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

Développement Discussion :

Mode de transmission des données


Sujet :

Développement

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Bonjour,

    Je souhaite établir la communication via telnet entre mon pc (WinXP) et un chassis tournant lui aussi sous Windows. Mon pc est donc le client et mon chassis le serveur sur lequel je souhaite me connecter.
    J'utilise donc pour cela des sockets via les lignes classiques suivantes:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SOCKET sock;
    SOCKADDR_IN sin;
    sin.sin_addr.s_addr	= inet_addr(MON_IP);
    sin.sin_family		= AF_INET;
    sin.sin_port		= htons(23);
    sock = socket(AF_INET,SOCK_STREAM,0);
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));
    En exécutant pas à pas chacune des lignes du code, j'obtiens belle et bien un numéro d'ID de socket correct, et le fonction connect me retourne bien 0. Tout porte ainsi à dire que je suis bien connecté sur mon châssis serveur.

    Le problème surgit lorsque je souhaite lire dans mon buffer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recv(sock, buffer, sizeof(buffer), 0);
    j'obtiens le code ÿû ÿû . Néanmoins la fonction revc me renvoie bien le nombre d'octets lus

    Mes conclusions: mon pc client est bien connecté au chassis serveur mais il y a certainement un problème de format lors de la communication entre les deux machines.
    J'ai vu que par défaut la comm' s'effectue en ASCII mais qu'il est parfois préférable de basculer dans un mode de dialogue binaire. Mais je ne trouve pas la commande pour effectuer ce changement de mode de communication (pour un serveur sous Unix il suffit d'utiliser les commandes mode, ascii, binary a priori) sous Windows...

    Quelqu'un peut il m'éclairer sur la question?

    Merci!!

    J'en profite pour ajouter que dans différents forum j'ai vu assez souvent cette question mais peu de réponses

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    salutations

    peut on savoir avec quoi tu fait l'envoi de données? ton propre code? une appli?

    si c'est une appli:
    telnet ne fait pas ce que tu crois, voir rfc854
    telnet est un protocole de terminal virtuel, ton serveur n'implémente pas le protocole telnet.

    essaye netcat à la place de telnet.

    sinon j'attend un peu plus de code pour me prononcer.

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Merci de ta réponse, je vais essayer de t'apporter quelques précisions, en espérant que ce soit celles dont tu as besoin...

    Bref, depuis mon pc client (win xp) je cherche à échanger des infos avec un équipement (windows embarqué) via ethernet. L'équipement cible accepte les commandes telnet si je me connecte depuis mon pc client avec l'hyperterminal ou via les telnet en exécutant les commandes.

    Là, je cherche à réaliser un genre de driver qui me permettrait de me connecter à l'équipement via une appli graphique que je ferais plus tard. Je teste donc dans un premier temps la communication entre mon pc et l'équipement cible via les quelques lignes de C++ qui suivent (qui sont les prémices d'un futur plus gros prog):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SOCKET sock;
    SOCKADDR_IN sin;
    sin.sin_addr.s_addr	= inet_addr(MON_IP);
    sin.sin_family		= AF_INET;
    sin.sin_port		= htons(23);
    sock = socket(AF_INET,SOCK_STREAM,0);
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));
    Ce sont ces lignes qui me donnent des codes bizarres dans le buffer...(Au lieu d'un "welcome" que je reçois depuis l'hyperterminal ou via les commandes telnet envoyées manuellement)

    Voilà, donc pour résumer manuellement la communication fonctionne, mais dès que je passe en socket et c++ aïe!

    J'espère que je t'ai donné les infos que tu attendais!

  4. #4
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    c'est bien les infos que j'attendais, et j'avais vu juste.

    ce que tu vois affiché est normal, tu dois implémenter le protocole telnet, voir la RFC854

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Citation Envoyé par Dark_Ebola Voir le message
    c'est bien les infos que j'attendais, et j'avais vu juste.

    ce que tu vois affiché est normal, tu dois implémenter le protocole telnet, voir la RFC854
    Merci, n'ayant jamais développer d'appli de ce genre je ne connais pas vraiment ce sujet! J'étudie ça demain!

    Joyeux noël

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Bonjour,

    J'aimerai avoir quelques précisions sur des phénomènes que j'observe et sur ce qui est réalisable....

    Bref, sur mon pc hôte j'ai intégré les classes implémentant Telnet. J'arrive donc à décoder dans le flux de données (issue de mon équipement serveur) majoritairement constitué de "ÿû ÿû " les infos que je souhaite (Welcome blablabla). Donc OK. Mais:

    - les commandes que j'envoie par telnet ne sont pas toujours executées par le serveur....un "dir" me renvoie parfois "cannot execute command" par exemple...et la fois d'après ca va marcher...problème de tempo peut être?

    -second point peut être important, ou non...sur mon équipement "serveur", si je tape la ligne de commande "telnet" celle ci n'est pas reconnue...c'est normal? Si j'installais/réalisais l'implémentation de telnet sur cette équipement (question à la con, n'existe pas un .exe pour installer le protocole telnet?) les choses ne seraient-elles pas plus simples? (Je dis ça parce que j'ai déjà réalisé un genre de driver pour commander à distance via telnet une caméra, et là tout était simple...envoi et reception via sockets sans avoir autres choses qu'à écrire une dizaine de lignes en c++....

    Dsl du roman

    Thx

    Si certains ont des idées, indications....

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/08/2008, 14h10
  2. Modes d'adressage des données
    Par Elaich dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 30/05/2008, 09h28
  3. [PHP-JS] transmission des données PHP
    Par vacknov dans le forum Langage
    Réponses: 7
    Dernier message: 14/03/2007, 19h55
  4. Transmission des données
    Par vacknov dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2007, 17h16
  5. transmission des données entre ASP et le serveur
    Par mademoizel dans le forum ASP
    Réponses: 3
    Dernier message: 17/12/2006, 20h11

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