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 :

sockets full-duplex en c#


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut sockets full-duplex en c#
    bonjour à tous
    svp comment peut on faire des sockets bidirectionnels en c#
    de telle façon que le serveur peut envoyer et reçevoir simultanément et idem pour le client

    merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Regarde ce tuto, il devrait te plaire :
    http://badger.developpez.com/tutorie...atez-avec-WCF/

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Bonjour,
    merci pour le tuto,mais ce que j'essaye de faire en premier lieu c'est un petit programme qui me permet de comprendre comment ça marche un simple socket full-duplex, ou plutôt comment modifier le programme ci-dessous pour que l'envoie d'1 message soit bidirectionnel
    _ _ _client_ _ _
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
     
    namespace cli1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                soc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777));
                byte[] buf = new byte[333];
                int n = soc.Receive(buf);
                string s = ASCIIEncoding.Default.GetString(buf);
                Console.WriteLine(s);
                Console.Read();
            }
        }
    }
    _ _ _ Serveur_ _ _
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
     
    namespace serv1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                sock.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777));
                sock.Listen(1);
                Socket actif = sock.Accept();
                byte[] buffer = new byte[333];
                string s = "je suis serveur";
               byte[] ss = ASCIIEncoding.Default.GetBytes(s);
                actif.Send(ss);
            }
        }
    }
    Merci

  4. #4
    Membre éprouvé

    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2011
    Messages : 115
    Par défaut
    Pour réaliser une communication half - duplex (Mais pas full duplex), tu doit juste mettre des boucles
    Pour le client : après le Connect
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
     
    namespace cli1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Socket soc = new Socket(AddressFamily.InterNetwork,   SocketType.Stream, ProtocolType.Tcp);
                soc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777));
                byte[] buf = new byte[333];
                //Par exemple
                while(true)
                { 
                    int n = soc.Receive(buf);
                    string s = ASCIIEncoding.Default.GetString(buf);
                    Console.WriteLine(s);
                    string txtsend = Console.ReadLine();
                    //Met ici la fonction send de socket 
                    soc.Send(txtsend);//Fonction exemple
            }
        }
    }
    Pour le serveur :
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
     
    namespace serv1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                sock.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777));
                sock.Listen(1);
                Socket actif = sock.Accept();
                byte[] buffer = new byte[333];
                while(true)
                {
                   string s = Console.ReadLine();
                   byte[] ss = ASCIIEncoding.Default.GetBytes(s);
                   actif.Send(ss);
                   int n = soc.Receive(buf);
                   string s = ASCIIEncoding.Default.GetString(buf);
                 }
            }
        }
    }

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Full duplex ou pas ?
    Par aurelien.tournier dans le forum Silverlight
    Réponses: 2
    Dernier message: 19/08/2010, 15h17
  2. liaison Gnat.Sockets full-duplex
    Par Invité dans le forum Ada
    Réponses: 4
    Dernier message: 16/03/2010, 15h11
  3. Propriétés d'une carte réseau et mode Full Duplex
    Par marcandre dans le forum Réseau
    Réponses: 6
    Dernier message: 09/12/2009, 13h48
  4. Port Serie Full Duplex Termios
    Par MeWaa dans le forum C
    Réponses: 6
    Dernier message: 02/12/2009, 11h36
  5. Configuration Full Duplex Ou Half Duplex
    Par dauphin34000 dans le forum Hardware
    Réponses: 9
    Dernier message: 18/12/2006, 13h38

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