begin process at 2010 02 10 11:24:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Réseau / Internet

 > 

Question réseau et multi thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Question réseau et multi thread

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ée 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 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 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 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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales