|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Bonjour,
Depuis 2 semaines je m'interresse à la réalisation d'une Application serveur TCP en C, compilé sous Tornado et deployé sur une cible fonctionnant sous VxWorks ! Celui-ci est presque Terminée ! Aujourd'hui un nouveau problème intervient !! J'aimerais réaliser l'application cliente qui devra tourner sur mon PC (OS : windows XP) La solution que j'avais pensé, était simplement une communication entre ma console Telnet (qui jouerait le rôle du client), et mon Serveur (préalablement déployé sur ma cible) Est ce Possible ? Si oui comment ? Sinon quels autres solutions me conseilleriez vous ? Cordialement Sebounty |
|
|
00
|
|
|
#2 | |
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
demarrer > exécuter > telnet IP:PORT
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Bonjour,
Ok pour lancer Telnet ! Cependant, mon probleme n'est pas resolu ! Car Ne faut t'il pas definir des parametres au préalable dans le code du serveur ? Rappel : Mon serveur fonctionne sur une cible VxWorks! je pense que ma console Telnet pourra jouer le rôle du client! Mais je ne sais pas du tout comment faire ! Je suppose qu'il faudra definir un port speciale sur mon serveur : 23 ! (si ce n'est pas celui la, faites le moi savoir) et Je suppose qu'il faudra rajouter une ou plusieurs fonctions dans mon code serveur ! Et c'est justement ces ou cette fonction que je ne sais pas parametrer et que je ne connais pas ! Citation:
D'ou le fait que j'avais placé ce topic dans la rubrique C ! Cordialement (en attente d'une reponse ) |
|
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
Citation:
Cet article contient un exemple de mini-serveur fonctionnant avec Telnet : http://emmanuel-delahaye.developpez.com/reseaux.htm Pose des questions si tu ne comprends pas.
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
||
|
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Bonjour,
Merci pour vos explications. Mon application fonctionne en Partie. Car lorsque je lance mon telnet de cette facon : Citation:
Pour reussir mes test il m'a fallu lancer mon application de la sorte: demarrer > exécuter > telnet > Open ip:port Là intervient un nouveau problème: La console n'est pas instinctive. Car après avoir fait mon Open, J'obtiens le print et les problemes suivant : Microsoft Telnet> Open "ip:port" Connecting to "ip:port" .... Ensuite le curseur se place en haut de ma fenetre et je suis obligé d'ecrire sur les textes existant. Pour valider je suis obliger de fermer la fenetre. --------------------------------------------- Comment faire donc, pour que mon curseur se place à la suite, sur ma console Telnet Cliente ? Comment faire pour valider le message a envoyer en appuyant sur entrée (sans avoir a fermer ma fenêtre) ? Comment faire pour pouvoir echanger des informations entre mon Telnet et mon serveur ? Vers quelles fonctions existante dois je alors me tourner ? Voici mon code : Server.c (Application VxWorks) Code :
PS: Votre Site est très bien fait |
|||
|
|
00
|
|
|
#6 | ||
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
telnet 127.0.01:4000 ouvre le port 4000 d'un serveur local. Citation:
Pour le moment, le serveur n'envoit rien. Pour faire une "saisie", il faut que les données entrantes soient interprétées. En mode Telnet, tout ce qui est tapé sur le clavier du terminal (clent) est transmis immédiatement. Le serveur reçoit en gros une trame par caractères saisis. Ils doivent être accumulés et quand ils forment une commande complète (séquence de caractères terminée par un \r, ASCII : 10), celle-ci est interprétée.
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Bonjour,
Je reste bloqué au niveau du retour chariot ! Ma chaine de caracteres n'est envoyé que si la console Telnet se ferme. Dans mon Telnet j'ai validé CR/LF. en faisant : "set crlf" lors du display (commande telnet) je vois bien : "New line mode - Causes return key to send CR & LF" Mon erreur se trouverait elle dans mon code vu précedement? Par la suite j'aimerais que mon client Telnet affiche des informations ! Au début un simple printf qui serait une forme d'accusé de reception! (Exemple "la chaine de caractere a bien été recu".) Est ce Possible? Si oui comment faire Comment faire? Encore merci Cordialement Sebounty |
|
|
00
|
|
|
#8 | |||
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
Citation:
Ton Telnet est bien reglé en mode terminal ? (Mode par défaut, à ma connaissance). Citation:
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|||
|
|
00
|
|
|
#9 | ||||
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Bonjour,
Citation:
Code :
Donc pour être plus precis, pour valider la chaine de caracteres emise par Telnet je suis obligé de fermer la console Telnet. Lorsque je fais display je suis bien en mode Console et non Stream ! Citation:
Exemple: faire en sorte que le caractere 1 (sur ma console cliente Telnet) corresponde a un envoi vers la Target (VxWorks) de la commande "version", recuperer la valeur (Ici une chaine de caracteres) et l'afficher sur mon Telnet ! Dois je obligatoirement faire une application cliente console en C pour mon host ? Cordialement Sebounty |
||||
|
|
00
|
|
|
#10 | |||||||
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
Dans ce genre d'application, j'utilisais ceci pour faire 'l'assemblage' : http://emmanuel-delahaye.developpez.com/clib.htm Module REC Citation:
Citation:
Citation:
Citation:
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|||||||
|
|
00
|
|
|
#11 | |||
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Bonjour,
m'etant absenté ces derniers jours, je n'ai pu reprendre mon projet qu'aujourd'hui. Voici les modifications que j'ai apporté à la fonction recuperant la chaine de caracteres emise par le terminal Telnet. J'ai defini le caractere zèro pour indiquer que ma chaine se termine, en pensant que mon bug allait être corrigé. Precision: j'ai dit: Citation:
Cela revient a dire: Lorsque je me deconnecte, avec mon client Telnet, du serveur, la chaine de caracteres est envoyée. Code :
Car a chaque fois que je veux envoyer une chaine de caractères je suis obligé de me deconnecter avec mon client. Comment faire pour que cette chaine soit envoyée par la simple pression de la touche entrée ? Merci Sebounty |
|||
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() |
Juste une question en passant : il n'y a pas de serveur Telnet (ou ssh) fourni avec VxWorks ? Ca permettrait d'accéder à l'interface de commande de la cible plus simplement qu'en refaisant un Telnet non ?
|
|
|
00
|
|
|
#13 | ||||||||||
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
EDIT : En regardant ton code, je vois une structure. Tu fais donc du transfert de données binaire ? C'est pas clair ton histoire. A ma connaissance, Telnet, c'est uniquement pour du mode texte. As-tu fait des études préalables ? Est-ce que tu sais exactement ce que tu as à faire ? Où sont les specs, l'analyse ? Citation:
Citation:
analyse en cours... Car a chaque fois que je veux envoyer une chaine de caractères je suis obligé de me deconnecter avec mon client. Citation:
(pseudo-code) Code :
(pseudo-code) Code :
Pour faire un serveur Telnet de base c'est : Code :
Se rappeler qu'en TCP, la chronologie et l'intégrité des données est respectée, mais que les données reçues peuvent être 'découpées' par rapport aux données émises... Il faut donc les reconstituer avant de les traiter.
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
||||||||||
|
|
00
|
|
|
#14 | |||||||
|
Invité de passage
![]() Inscription : avril 2007 Messages : 24 ![]() |
Alors le projet que je dois faire consiste à :
Créer un ensemble applicatif client-serveur. Le client (sur mon Host) est un terminal Telnet Officiel (Windows). Le serveur est le programme vu dans les posts précedents. L'objectif est de faire communiquer ces 2 applications. Le client devra envoyer une commande typic VxWorks (exemple "version" qui affichera la version du kernel). Le serveur devra alors lui renvoyer le resultat, de cette commande.( dans cette exemple "VxWorks.... V1.2...") Pour finir le client devra afficher ce resultat à l'ecran, et l'enregistrer dans un fichier. Pour le moment j'essaye d'envoyer une chaine de caractere, mais cette fonction n'a aucun avenir dans mon programme. C'est juste histoire de me faire la main. Citation:
Merci Sebounty |
|||||||
|
|
00
|
|
|
#15 | |||||||
![]() ![]() Inscription : décembre 2003 Messages : 14 502 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Par exemple : Génère très probablement les trames de données (on suppose que <enter> -> LF) "h" "e" "l" "p" "\n" même si on tape vite. Rappel : en mode caractère, dès qu'un caractère est tapé, il est émis sans attendre le <enter>. D'ailleurs, si tu veux gérer la correction (BS) et l'écho distant, il faut tout faire à la main dans le serveur... On a tout intérêt à traiter les caractères un à un dans une routine séparée de la réception. Par exemple (kinda pseudo-C code) : Code :
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com