Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Question réseau et multi thread [ Archives / Réseau / Internet ] (vbmore)

jeudi 29 décembre 2005 à 17:31:08 | Question réseau et multi thread

vbmore


Salut !

je suis en train de programmer un client server TCP/IP et je bute sur un probleme. En effet, pour avoir un systeme asynchro., je créer une nouvelle thread pour communiquer avec le client. Or dans la doc. MS, ils mettent en avec le system Begin*() et End*(). Dois-je réécrire mon code ?


        private System.Net.Sockets.TcpListener listener;
        Thread thread;
        Collection<Thread> threads=new Collection<Thread>();

        public System.Net.Sockets.TcpListener Listener
        {
            get { return listener; }
        }
   


        public ChatServer(int port, string userName)
        {
            listener = new TcpListener(port);
            users.Add(0, new User(0, userName, Program.NetAssemblyVersion));
        }



        public void Start()
        {
            if (thread == null)
            {
                listener.Start();
                thread = new Thread(new ThreadStart(WaitingTCPClient));
                thread.Start();
            }
        }

        void WaitingTCPClient()
        {
            for (; ; )
            {
                TcpClient client;
                client = listener.AcceptTcpClient();
                Thread threadClient = new Thread(new ParameterizedThreadStart( AcceptTcpClient) );
                lock (threads)
                    threads.Add(threadClient);
                threadClient.Start(client);
            }
        }

        void AcceptTcpClient(object arg0)
        {
                TcpClient client = (TcpClient)arg0;
            try
            {

                Version clientVersion = InitializeClientConnexion(client);


                ChatServerUser user = new ChatServerUser(GetNewUserID(), "Anonyme", clientVersion, client);

/// Les deux lignes ci dessous ne concerne pas ma question
                user.SendWriter.Write(CommandIDs.s_GiveID);
                user.SendWriter.Write(user.ID);



                ushort commandID;
                for (; ; )
                {
                   // la normallement il doit avoir le code pour recevoir les données du client
                }
            }

            finally
            {
                if (client.Connected)
                    client.Close();
                lock (threads)
                    threads.Remove(Thread.CurrentThread);
            }

        }

note : le code est loin d'être terminés. User et ChatServerUser sont des classes. GetNewUserID() retourne un identifiant unique pour l'utilisateur. InitializeClientConnexion(TcpClient) communique avec le client (échange des numéro de version) et retourne la version du client.

De même pour la lecture des données, j'utilise TcpClient.GetStream().Read(). Dois je remplacer cette instruction par le systeme Begin/End.

Merci d'avance pour vos réponse.

vbmore



Cette discussion est classé dans : client, user, thread, threads, listener


Répondre à ce message

Sujets en rapport avec ce message

Threads [ par Cisaks ] Bonjour ! Donc voici mon probleme. J'ai un programme qui appel une thread pour activer un serveur asynchrone, elle mémé a deux autres threads qui sont TCP Listener et les threads [ par mimosa803 ] Bonjour,Je suis entrain de développer une application Client/Serveur en utilisant TCPClient et TCPListener. Mon problème est comment je peux créer un Serveur mutli-threads [ par mimosa803 ] Bonjour,Je suis entrain de développer une application Client/Serveur en utilisant TCPClient et TCPListener. Mon problème est comment je peux créer un Suspendre/Reprendre Thread [ par Leucistic ] Bonjour, J'ai crée un thread qui sert de chronomètre (affiche le temps sur un label).Je souhaiterais pouvoir suspendre/reprendre ce thread selon les a Problème arrêt thread c# [ par Passboss87 ] Bonjour, je suis débutant en visual studio 2005.J'ai voulu créer un chat serveur/client et tout marche quasiment.Et j'arrive enfin au moment où je doi [Threads] Stopper un thread via un control [ par littlekenny ] Salut,M'étant  basé sur l'article de MorpionMx (Opérations cross-threads - utilisation des délégations synchrones / asynchrones), j'aimerais fermer mo Threads et accès à l'application [ par bubbathemaster ] Bonjour,Je programme depuis qq temps un client FTP. Jusque là tout allait bien jusqu'à ce que je décide d'utiliser des threads. En effet, lorsque j'en thread dynamique (a la volée) [ par metos ] salut à tout le monde,est-il possible de créer des thread dynamiquement. en fait j'aurais besoin de créer plusieurs thread identiques mais je ne sais Socket 2.0 c# serveur multiclient Déconnexion reconnexion [ par sdess ] Bonjour,J'ai deux problèmes concernant une application client/serveur avec un mode de communication Assynchrone, framework 2.0, en c#:1°) concernant l ThreadPool avec 1000 requetes [ par darkolite ] Bonjour messieurs (dames?)Je lutte depuis pas mal de temps avec le ThreadPool en C#. Je ne sais pas si c'est d'ailleurs la meilleurs solution. Voila c


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.