Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2702 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Socket communication Appli Client/Serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Socket communication Appli Client/Serveur

n°1737384
sebkill
Posté le 26-05-2008 à 19:36:54  profilanswer
 

Bonjour;
 
Je suis en train de développer une appli client/serveur de messagerie instantannée Like MSN. J'ai consulter énormément de topic, tuto et cours mais je suis sur une erreur et aussi quelques interrogations.
En effet j'ai trouvé beaucoup d'exemple concernant des applications où le serveur "se contenter" de mettre en relation plusieurs client mais dans le cas d'une application de messagerie instantannée l'application est à la fois cliente et serveur car chaque client doit pouvoir envoyer et recevoir des messages.
 
J'utilise donc les sockets en mode asynchrone et le démarrage du serveur se passe bien :

Code :
  1. //Création de la socket
  2.             this.ServerSocket = new Socket(AddressFamily.InterNetwork,
  3.             SocketType.Stream,
  4.             ProtocolType.Tcp);
  5.             try
  6.             {
  7.                 //On lie la socket au point de communication
  8.                 ServerSocket.Bind(new IPEndPoint(ipAddress, 8000));
  9.                 //On la positionne en mode "écoute" 10 Clients Max
  10.                 ServerSocket.Listen(10);
  11.                 //On se met en attente de la connection d'un client  
  12.                 ServerSocket.BeginAccept(new AsyncCallback(ConnectionAcceptCallback), ServerSocket);
  13.                 MessageBox.Show("Serveur démarré en : "+ipAddress);


 
Ensuite un client se connecte au serveur (typiquement en double clic sur un contact de sa liste) ou en rentrant l'ip a contacter (le port n'étant pas configurable mais c'est un détail pour l'instant)

Code :
  1. this.SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  2.                 IPAddress ipadress;
  3.                 //On récupere l'adresse ip a contacter
  4.                 ipadress = IPAddress.Parse(ip_destinataire.Text);
  5.                 this.SocketClient.BeginConnect(new IPEndPoint(ipadress, 8000), new AsyncCallback(ConnectCallback), this.SocketClient);


 
Venant en au problème l'envoi d'un message du client au serveur et inversement.
Une fois que le client est connecté j'ouvre un Nouvelle Form "Message" qui sert a saisir le message à envoyer.
Mais le serveur n'est pas encore en attente de message et je ne sais pas quand le faire pour moi le plus simple étant de mettre le serveur en attente dès que le client ce sera connecté au serveur (même s'il peut se connecter et rien écrire finalement).
 
J'ai donc une fonction ReceiveMessage()  

Code :
  1. public void ReceiveMessage()
  2.         {
  3.             if (this.SocketClient != null && this.SocketClient.Connected)
  4.             {
  5.                 //On se met en attente d'un message
  6.                 this.SocketClient.BeginReceive(this.readbuf, 0, this.readbuf.Length, SocketFlags.None, new AsyncCallback(ReceiveMessageCallback), this.SocketClient);
  7.             }
  8.             else
  9.             {
  10.                 MessageBox.Show("Client non connecté" );
  11.             }
  12.         }


 
Qui est appelé lorsqu'un client vient de se connecter  

Code :
  1. //on accepte la connection
  2.                     this.SocketClient = socket.EndAccept(asyncResult);
  3.                     MessageBox.Show("Connexion acceptee" );
  4.                     ReceiveMessage();
  5.                 }


 
et j'ai l'erreur suivante :
http://sebkill.free.fr/erreur.JPG
 
Voilà je sais que c'est un peu long mais j'essaye d'être précis et c'est pas facile d'expliquer un projet en cours de réalisation.
N'hésitez pas de faire des suggestions elles seront bienvenu...
 
Merçii

mood
Publicité
Posté le 26-05-2008 à 19:36:54  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Socket communication Appli Client/Serveur

 

Sujets relatifs
Fonctionnement de l'api java comm pour communication avec ports sérieEchange de fichiers client-servlet
[conception] souci de choix pour une appli client/serveurProblème installation libraire Java Communication
client-serveur UDP probléme de communicationmysql command line client -- probleme d'accent
Plus de sujets relatifs à : Socket communication Appli Client/Serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR