sdess
Messages postés18Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention15 avril 2010
-
30 janv. 2009 à 10:54
sdess
Messages postés18Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention15 avril 2010
-
31 janv. 2009 à 14:32
Bonjour,
J'ai deux problèmes concernant une application client/serveur avec un mode de communication Assynchrone, framework 2.0, en c#:
1°) concernant les multi-clients. Je ne parviens pas à connecter 2 clients sur le même serveur. Unitairement, je parviens à me connecter au serveur, mais dès que j'en ai un client de connecté, l'autre n'y arrive pas (peut importe celui qui est connecté en premier).
2°) Quand je déconnecte mon client, je n'arrive pas à le reconnecter. même après une attente de 5-10 minutes.
Voici ma classe de base client :
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Outils
{
public class BaseClient : ClientServeur
{
private ManualResetEvent _connectDone = new ManualResetEvent(false);
public virtual Socket Start (string adresseIP, int port)
{
IPAddress remoteIPAddress = System.Net.IPAddress.Parse (adresseIP);
return Start (remoteIPAddress, port);
}
using System;
using System.Text;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Net;
using System.Xml.Serialization;
namespace Outils
{
[Serializable]
public class BaseServeur : ClientServeur
{
private int _port;
private int _maxConnexion = 10;
private List<EtatSocketReseau> _listeClients = new List<EtatSocketReseau> ();
[XmlIgnore]
public List<EtatSocketReseau> ListeClients
{
get { return _listeClients; }
set { _listeClients = value; }
}
[XmlIgnore]
public int MaxConnexion
{
get { return _maxConnexion; }
set { _maxConnexion = value; }
}
[XmlIgnore]
public int Port
{
get { return _port; }
set { _port = value; }
}
public virtual void Start ()
{
Socket listener = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipLocal = new System.Net.IPEndPoint (IPAddress.Any, _port);
listener.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
listener.Bind (ipLocal);
listener.Listen (_maxConnexion);
listener.BeginAccept (new AsyncCallback (AcceptationConnexion), listener);
}
public virtual void Stop ()
{
foreach (EtatSocketReseau state in _listeClients)
{
Deconnection (state.SocketCourante);
}
_listeClients = new List<EtatSocketReseau> ();
}