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

Dotnet Discussion :

Fin échange TCP client / serveur


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Par défaut Fin échange TCP client / serveur
    Bonjour

    Je suis en train de réaliser une application client/serveur avec le protocole tcp.
    Le problème n'est pas lié spécialement à C#, je poste ici seulement parce que c'est le langage que j'ai utilisé.

    Le principe est simple :
    - l'application client se connecte au serveur et envoie des données à executer
    - le serveur exécute et répond quand il a terminé puis clos la connexion.

    Ma question est comment fait-on en général pour indiquer que le client à transmis toutes ses données pour que le serveur sorte de la boucle while et exécute ce qu'il a à faire puis réponde.

    Les données transmises sont du XML mais je crois pas que ça change grand chose pour vous.

    J'ai pensé éventuellement essayer de détecter un caractère comme \0 pour caractère de fin de transmission mais je voudrais savoir s'il existe un manière plus courante, ou peut être des méthodes à utiliser.

    Merci à tous

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Tu peux soit fixer un timeout: par exemple le client envoie des donnees puis si il envouie plus rien pendant un certain temps, le serveur ferme sa socket.
    Avec ton fichier XML tu peux repérer la balise de fin de fichier puis fermer la socket.
    Tu peux aussi mettre un chaine speciale genre EOF qui indique la fin de transmission.

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Pourquoi ne pas utiliser le .net remoting avec tcpServerChannel et tcpClientChannel ?

    Il suffirait alors de transférer le XML comme un tableau de byte et t'affranchirait de la gestion de la réception server de la requète et de la recption client de la réponse.

    Sinon, tu as 2 protocoles classiques :
    1) encadrer le message par une marque de début et de fin (par exemple, un caractère STX au début et un ETX à la fin)
    2) prefixer le message par sa longueur.

    La méthode 1 s'impose si on craint une corruption du contenu (par exemple en connexion série RS232).
    Bien que je préfére la méthode 1, je dois dire que nous n'avons jamais constaté de corruption avec des appli utilisant la méthode 2 sur IP.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Citation Envoyé par Graffito Voir le message
    1) encadrer le message par une marque de début et de fin (par exemple, un caractère STX au début et un ETX à la fin)
    Je pense qu'il peut se servir du XML qui a deja une marque de debut et de fin.

    Citation Envoyé par Graffito Voir le message
    2) prefixer le message par sa longueur.
    C'est vrai que l'implementation d'un mini protocole de transmission peut etre pas mal. Un Modbus-like pas complique peut etre tres pratique et surtout reutilisable.

Discussions similaires

  1. [TCP] Client / Serveur derrière un routeur
    Par webpsi dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/06/2014, 11h27
  2. [SOCKET] TCP client/serveur
    Par hxh2008 dans le forum Réseau
    Réponses: 3
    Dernier message: 25/11/2011, 17h01
  3. Réponses: 2
    Dernier message: 06/05/2011, 20h55
  4. [TCP] Client/Serveur avec les composants Indy
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/02/2007, 12h47

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