Partage
  • Partager sur Facebook
  • Partager sur Twitter

Socket C#

    4 novembre 2019 à 18:44:28

    Bonjour à tous,

    Je me permets de vous écrire car je souhaiterais savoir quelque chose. Je débute en C#, et je n'ai jamais fait vraiment de socket dans n'importe quel langage enfin pas côté server.

    Je souhaite dans un premier temps voir si j'ai bien compris comment cela fonctionne de manière générale.

    J'écoute -> j'accepte un client -> je stock sa connexion dans un thread pour pouvoir communiquer avec lui

    C'est bien comme cela que ça fonctionne dans les grandes lignes ?

    Pour un projet je dois faire un listener (donc server) et un côté client. Je regarde plusieurs tuto sur le net seulement beaucoup de gens utilisent

    StreamWriter sw = new StreamWriter(ClientStream);
    StreamReader sr = new StreamReader(ClientStream);

    un reader et un writer...

    Alors que dans la doc c'est plutôt comme ceci :

    while((i = stream.Read(bytes, 0, bytes.Length))!=0) {
    
    }

     J'ai testé les deux, j'ai aussi vu qu'il était possible d'utiliser la première méthode, puis la seconde sur la même socket.

    En soit j'imagine que c'est la même chose mais j'imagine qu'il y a des différences lesquelles ? Quelle est la bonne pratique ?

    C'est un choix volontaire de ne pas avoir utiliser de système asynchrone.

    Merci.




    -
    Edité par nitr037 4 novembre 2019 à 18:46:15

    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2019 à 19:28:00

      >C'est bien comme cela que ça fonctionne dans les grandes lignes ?

      Ça dépend, mais c'est une manière de faire assez courante sur de petits serveurs applicatifs (problème monté en charge).

      Les StreamWriter et StreamReader sont des concepts de plus "haut niveau" que les stream des Sockets.

      Cela veut dire qu'il est plus facile et plus concis de faire des choses "génériques" avec ces "StreamWriter et StreamReader" que de gérer "à la main".

      Il est donc préférable de les utiliser quand le besoin ne nécessite pas une gestion bas niveau des sockets (gestion des octets "hors bande", le multicast, etc...).

      >C'est un choix volontaire de ne pas avoir utiliser de système asynchrone.

      Et vous faites volontairement une bêtise.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        4 novembre 2019 à 21:33:00

        Merci pour votre réponse. 

         Pour ce qui est de l’asynchrone c’est que je n’ai pas le choix, cela est imposé. 

        • Partager sur Facebook
        • Partager sur Twitter
          5 novembre 2019 à 10:35:00

          Parce que ton prof est aux fraises ???
          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            5 novembre 2019 à 13:25:07

            Non, enfin je ne sais pas...

            Je sais que nous allons le voir dans l'année...

            • Partager sur Facebook
            • Partager sur Twitter

            Socket C#

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown