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# Discussion :

Client/serveur et C#


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 92
    Par défaut Client/serveur et C#
    Bonjours,

    Voila, j’ai une question à vous soumettre. Je voudrai réaliser une application client-serveur toute simple. J’ai pour projet de réaliser une application toute simple (ou pas) de client-serveur ou il y aurai pour le moment juste une connexion du client sur un serveur (enfin « serveur » très simple quoi, ultra basic) et je voudrai que cette connexion de mon client se fasse de n’importe ou (c'est-à-dire sur mon réseau domestique par exemple ou sur le web).

    1) Est-ce réalisable ?
    2) Quelle technique employer ? (j’ai vu du coté des socklets mais est-ce la bonne solution ?)
    3) Si cette technique existe et si elle est réalisable avez-vous des exemples de code/voir une documentation abordable ?

    J’ai conscience que ma question est « naïf » mais je débute vraiment dans la partie « réseaux » de la programmation est la plus part des documentations que j’ai trouver sont le plus souvent trop ardu pour moi ou imprécise : s

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    J'ai fait une proposition ici : http://www.developpez.net/forums/d99...nt-server-tcp/

    Si tu souhaites travailler avec TCP/IP, mon code montre l'utilisation asynchrone de TcpListener. Je pense que ça pourrait convenir, le code est très simple.

    On utilise la classe avec les sockets lorsque l'on a besoin d'une gestion fine sur les datas réseaux (comme utiliser son propre protocole).

  3. #3
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Pourquoi pas des services WCF? C'est pas très compliqué.

  4. #4
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    bonjour,

    tu peut utiliser TCPClient comme client et Tcplistner comme serveur

    il suffit de de lancer ton TcpListner en mode lisning,

    et attendre une connexion de la part d'un client .

    c 'est très simple a utilise et ca implémente le TCP/IP.
    mais il y'a aussi le mode non connecte de UPD qui ne nécessite pas d' établir une connexion

    voila un lien pour commence

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 92
    Par défaut
    Merci pour vos réponse !
    Plusieurs personne mon conseillé WCF, j'ai donc suivie le tutorial http://msdn.microsoft.com/en-us/library/ms734712.aspx
    Mais voila sa marche que en local et pas en réseau...

    Je pense savoir pourquoi : un service WCF doit il être hébergé sur un serveur pour être consommé ? (question naïf je sait...)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    J'ai fait du "socket" et du webservice pour des applications plus où moins compliquées (chat,transfert de fichier, connexion à un bd etc.).

    Tout dépend de quel est ton but.

    Pour le socket, je penche plus pour un application windows genre chat, tu développes ton protocoles et ton serveur exécute ce que les clients demandent.

    Pour le webservice, c'est idéal pour le transfert d'infos xml, bien que tu puisses aussi faire plusieurs autres choses.

    Sois un peu plus précis dans ce que tu veux. Tu as des tonnes d'exemples sur le net.

    C'est un merveilleux monde que celui du client serveur.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 92
    Par défaut
    Citation Envoyé par girouxv Voir le message
    C'est un merveilleux monde que celui du client serveur.
    Bas en fais je voulais m'initier dans ce monde merveilleux par un tchat par exemple !
    J'ai essayer les classes TCPClient comme client et Tcplistner comme serveur.
    O_o
    OMG
    Comment c'est simple d'utilisation : s (un tchat est réalisable avec ces classes ? Si j'ai bien suivit ces classes englobe les classes sur les socket et rend leur utilisation plus simple ?).

    -----


    Je vais me pencher plus sérieusement sur les classes TCPCLient et Tcplistener sans abandonner de vu le WCF (je voudrai essayer de créer des applications distribuées).
    Concrètement pour l'exemple de service/client donné sur http://msdn.microsoft.com/en-us/library/bb924513.aspx tu ferai comment pour qu'il marche sur mon réseaux ?

  8. #8
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Tu as un tuto ici : http://skoffler.developpez.com/dotnet/tcpclient/

    Le mien est en cours, la différence c'est qu'il montrera comment interagir avec l'IHM (windows forms en milieu multithreadé).

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par quanta Voir le message
    Je pense savoir pourquoi : un service WCF doit il être hébergé sur un serveur pour être consommé ? (question naïf je sait...)
    La réponse est simple : non.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    Exactement ce que tu as besoin pour commencer:
    http://www.c-sharpcorner.com/UploadF...ketChatBF.aspx

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 92
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    La réponse est simple : non.
    D'accord donc la question reste de savoir pourquoi sa marche pas : s
    Pour cela je pense qu'il est pertinent de voir mon code.

    Coté serveur :

    1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    using System.ServiceModel.Description;
     
     
    namespace Microsoft.ServiceModel.Samples
    {
     
     
        class Program
        {
            static void Main(string[] args)
            {
                // Step 1 of the address configuration procedure: Create a URI to serve as the base address.
                Uri baseAddress = new Uri("http://192.168.1.10:8000/ServiceModelSamples/Service");
     
                // Step 2 of the hosting procedure: Create ServiceHost
                ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);
     
                try
                {
     
     
                    // Step 3 of the hosting procedure: Add a service endpoint.
                    selfHost.AddServiceEndpoint(
                        typeof(ICalculator),
                        new WSHttpBinding(),
                        "CalculatorService");
     
     
                    // Step 4 of the hosting procedure: Enable metadata exchange.
                    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                    smb.HttpGetEnabled = true;
                    selfHost.Description.Behaviors.Add(smb);
     
                    // Step 5 of the hosting procedure: Start (and then stop) the service.
                    selfHost.Open();
                    Console.WriteLine("The service is ready.");
                    Console.WriteLine("Press <ENTER> to terminate service.");
                    Console.WriteLine();
                    Console.ReadLine();
     
                    // Close the ServiceHostBase to shutdown the service.
                    selfHost.Close();
                }
                catch (CommunicationException ce)
                {
                    Console.WriteLine("An exception occurred: {0}", ce.Message);
                    selfHost.Abort();
                }
     
     
            }
        }
    }

    2) La classe utilisée + interphase

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
     
    namespace Microsoft.ServiceModel.Samples
    {
        [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
        public interface ICalculator
        {
            // Step7: Create the method declaration for the contract.
            [OperationContract]
            double Add(double n1, double n2);
            [OperationContract]
            double Subtract(double n1, double n2);
            [OperationContract]
            double Multiply(double n1, double n2);
            [OperationContract]
            double Divide(double n1, double n2);
        }
     
        class CalculatorService:ICalculator
        {
            public double Add(double n1, double n2)
            {
                double result = n1 + n2;
                Console.WriteLine("Received Add({0},{1})", n1, n2);
                // Code added to write output to the console window.
                Console.WriteLine("Return: {0}", result);
                return result;
            }
     
            public double Subtract(double n1, double n2)
            {
                double result = n1 - n2;
                Console.WriteLine("Received Subtract({0},{1})", n1, n2);
                Console.WriteLine("Return: {0}", result);
                return result;
            }
     
            public double Multiply(double n1, double n2)
            {
                double result = n1 * n2;
                Console.WriteLine("Received Multiply({0},{1})", n1, n2);
                Console.WriteLine("Return: {0}", result);
                return result;
            }
     
            public double Divide(double n1, double n2)
            {
                double result = n1 / n2;
                Console.WriteLine("Received Divide({0},{1})", n1, n2);
                Console.WriteLine("Return: {0}", result);
                return result;
            }
     
        }
    }
    ---------------------
    ---------------------

    Coté client maintenant :

    1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    //Step 1: Create an endpoint address and an instance of the WCF Client.
                    CalculatorClient client = new CalculatorClient();
     
     
                    // Step 2: Call the service operations.
                    // Call the Add service operation.
                    double value1 = 100.00D;
                    double value2 = 15.99D;
                    double result = client.Add(value1, value2);
                    Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
     
                    // Call the Subtract service operation.
                    value1 = 145.00D;
                    value2 = 76.54D;
                    result = client.Subtract(value1, value2);
                    Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);
     
                    // Call the Multiply service operation.
                    value1 = 9.00D;
                    value2 = 81.25D;
                    result = client.Multiply(value1, value2);
                    Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);
     
                    // Call the Divide service operation.
                    value1 = 22.00D;
                    value2 = 7.00D;
                    result = client.Divide(value1, value2);
                    Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);
     
                    //Step 3: Closing the client gracefully closes the connection and cleans up resources.
                    client.Close();
     
     
                    Console.WriteLine();
                    Console.WriteLine("Press <ENTER> to terminate client.");
                    Console.ReadLine();
                }
                catch (Exception e)
                {
                    System.Console.Out.WriteLine(e.Message);
                    System.Console.In.Read();
                }
     
            }
        }
    }
    2) Fichier app.config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.serviceModel>
            <bindings>
                <wsHttpBinding>
                    <binding name="WSHttpBinding_ICalculator" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                        allowCookies="false">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00"
                            enabled="false" />
                        <security mode="Message">
                            <transport clientCredentialType="Windows" proxyCredentialType="None"
                                realm="" />
                            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                algorithmSuite="Default" establishSecurityContext="true" />
                        </security>
                    </binding>
                </wsHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://192.168.1.10:8000/ServiceModelSamples/Service/CalculatorService"
                    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICalculator"
                    contract="ICalculator" name="WSHttpBinding_ICalculator">
                    <identity>
                        <userPrincipalName value="PC-de-hélène\Administrateur" />
                    </identity>
                </endpoint>
            </client>
        </system.serviceModel>
    </configuration>
    3) Fichier generatedProxy.cs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    //------------------------------------------------------------------------------
    // <auto-generated>
    //     Ce code a été généré par un outil.
    //     Version du runtime :2.0.50727.3603
    //
    //     Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
    //     le code est régénéré.
    // </auto-generated>
    //------------------------------------------------------------------------------
     
     
     
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(Namespace="http://Microsoft.ServiceModel.Samples", ConfigurationName="ICalculator")]
    public interface ICalculator
    {
     
        [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Add", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/AddResponse")]
        double Add(double n1, double n2);
     
        [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Subtract", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/SubtractResponse")]
        double Subtract(double n1, double n2);
     
        [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Multiply", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/MultiplyResponse")]
        double Multiply(double n1, double n2);
     
        [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Divide", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/DivideResponse")]
        double Divide(double n1, double n2);
    }
     
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    public interface ICalculatorChannel : ICalculator, System.ServiceModel.IClientChannel
    {
    }
     
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    public partial class CalculatorClient : System.ServiceModel.ClientBase<ICalculator>, ICalculator
    {
     
        public CalculatorClient()
        {
        }
     
        public CalculatorClient(string endpointConfigurationName) : 
                base(endpointConfigurationName)
        {
        }
     
        public CalculatorClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress)
        {
        }
     
        public CalculatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(endpointConfigurationName, remoteAddress)
        {
        }
     
        public CalculatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress)
        {
        }
     
        public double Add(double n1, double n2)
        {
            return base.Channel.Add(n1, n2);
        }
     
        public double Subtract(double n1, double n2)
        {
            return base.Channel.Subtract(n1, n2);
        }
     
        public double Multiply(double n1, double n2)
        {
            return base.Channel.Multiply(n1, n2);
        }
     
        public double Divide(double n1, double n2)
        {
            return base.Channel.Divide(n1, n2);
        }
    Voila, il doit bien avoir un soucis quelque part... Enfin pourquoi sa marcherais sur mon propre pc si il y avait vraiment un soucis ? : s

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 38
    Par défaut
    ca veut dire quoi "ça ne marche pas" ???

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 92
    Par défaut
    Voila j'ai décider (provisoirement) de laisser tomber le WCF au profit d'une étude des classes TCPListener et TCPClient...
    J'ai parcouru le Web et je suis tomber sur de bon tuto qui traitent malheureusement que de l'interaction entre un seul TCPLIstener (le serveur) et un seul TCPClient (le client).
    Maintenant je voudrai chercher a comprendre la gestion de plusieur TCPClient par un TCPListener...
    Hélas je trouve peu de documentation sur ce sujet...
    Si quelqu'un avait un petit lien sa m'aiderai fortement !
    Merci d'avance

  14. #14
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Bonjour ,
    tu peut collecte tes objets client dans un dictionnaire et parcourir cette dictionnaire pour récupérer les données transmises

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Dictionary<int, TcpClient> listtcpclients = new Dictionary<int, TcpClient>();
                TcpListener tcpl = new TcpListener();
                while (true)
                {
                    TcpClient tcpc = tcpl.AcceptSocket();
                    listtcpclients.Add(ID, tcpc);
                }
    et fonction qui parcourir cette liste "listtcpclients " a fin de savoir s'il y'a des informations a recevoir


    est une idée pas assez optimise...

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 92
    Par défaut
    Suite a différent message poster ici j'ai réusi à réaliser un prototype de tchat, toute fois il me reste un problème majeur.
    Comme un dessin vaut mieux qu'un long discours voici mon problème en diagramme (voir pj)

    D'autre part, il n'y a que le texte qui puissent être manipuler en Tcp/Ip ? : s
    Peut on envoyer des tableaux par exemple ou de l'xml ?
    Images attachées Images attachées  

  16. #16
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Bonjour ,

    pour les gros informations tu peut soit les envoyées sous forme de string soit tu peut les envoyées sous forme des bytes.
    un bon buffer ne doit pas dépasse 4ko (4096octets).

    bien ,en TCP ta une avantage hyper bon car c'est ce protocole qui copie et recolle l'infromation en trames "packets". alors tu est sûr 100% que ton information soit reçu par ton destinataire correctement correcte.

    si tu a un Xml essai de lui couverture en tableau de byte et envoie le sous forme des packets "qui ne dépassent pas 4ko".

Discussions similaires

  1. Web contre client/serveur que choisir??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 41
    Dernier message: 24/01/2004, 15h53
  2. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57
  3. Réponses: 2
    Dernier message: 01/10/2002, 12h25
  4. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58
  5. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 15h46

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