[.NET] Probleme connexions 2 clients simultannées Aidez moi !!!

Probleme connexions 2 clients simultannées Aidez moi !!! [.NET] - C#/.NET managed - Programmation

Marsh Posté le 23-11-2005 à 15:02:22    

Slt à tous,
 
Je developpe une application chat en sockets asynchrome mais j'ai un petit soucis :
 
Si 2 clients se connectent simultanément ( ou 3... ) et bah dans mon serveur ca plante.
 
Est-il possible de "mettre en attente" un des clients le temps que l'autre fini sa procédure de connection ??
 
Peut être un truc du genre :
 

Code :
  1. If le serveur est occupé ( en gros si un client est en train de se connecter ) Then
  2. ' Mettre le client dans une file d'attente
  3. else
  4. ' se connecter
  5. endif


 
'Et des que le client est connecté, alors il envoie un signal au 2eme client et à son tour il se connecte et ainsi de suite...
 
 
C'est possible de faire ca ?? Ou alors y'a peut etre plus facile ....
 
Merci

Reply

Marsh Posté le 23-11-2005 à 15:02:22   

Reply

Marsh Posté le 23-11-2005 à 16:36:26    

Suffit de mettre ta fonction d'écoute ds un thread, nan ?

Reply

Marsh Posté le 23-11-2005 à 16:56:07    

Peut etre je vois pas trop ce que tu veux dire..
Tu pourrais m'expliquer ?
merci

Reply

Marsh Posté le 23-11-2005 à 20:31:45    

http://msdn.microsoft.com/library/ [...] eading.asp


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 23-11-2005 à 21:29:09    

Dsl je ne suis mal exprimer.. Je sais créer un Thread et tout.. mais je vois pas enquoi mettre ma fonction listen dans un thread va regler momn pb ??

Code :
  1. Public Sub Listen(ByVal PortEcoute As Integer, ByVal IpEcoute As IPAddress)
  2.         Try
  3.             'Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
  4.             'Dim ipAddress As IPAddress = IpEcoute 'ipHostInfo.AddressList(2)
  5.             Dim remoteEP As New IPEndPoint(IpEcoute, PortEcoute) '(ipHostInfo.AddressList(2), PortEcoute)
  6.             sckserver = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  7.             RaiseEvent IPConnect(IpEcoute.ToString, sckserver)
  8.             With sckserver
  9.                 .Bind(remoteEP)
  10.                 .Listen(m_NumberListen)
  11.                 .BeginAccept(New AsyncCallback(AddressOf AcceptCallback), sckserver)
  12.                 ListSocket.Add(sckserver) 'ajoute a un tableau les sockets client
  13.                 mySL.Add("Serveur", sckserver)
  14.             End With
  15.             m_ConnectState = True
  16.             RaiseEvent ConnectStatut(m_ConnectState)
  17.         Catch ex As Exception
  18.             MsgBox(ex.ToString)
  19.             MsgBox("Adresse IP ou port de connection manquant", MsgBoxStyle.Critical, "Erreur de connexion" )
  20.             RaiseEvent MessageError(1000, "Erreur adressage IP ou/et Port manquant(s) ou érroné(s)" )
  21.             m_ConnectState = False
  22.             RaiseEvent ConnectStatut(m_ConnectState)
  23.         End Try
  24.     End Sub


Voila ma procedure Listen... Maintenant comment je pourais mettre ca dans un thread ?? et est ce que ca va resoudre mon pb ??
 
merci

Reply

Marsh Posté le 24-11-2005 à 18:57:29    

svp aider moi ca fais des mois que je suis sur ce pb ... :'(


Message édité par fdiedler le 24-11-2005 à 18:57:46
Reply

Marsh Posté le 24-11-2005 à 23:46:06    

Reply

Marsh Posté le 25-11-2005 à 12:19:28    

merci mais ta source est un serveur et un client developpé en C# et moi je l'ai deja developpé mon projet donc je sais deja comment me connecter, envoyer des données et fermer les sockets mais je cherche juste à faire ce que j'ai dis plus haut : cad de mettre les clients en file d'attente...
 
C'est possible ???

Reply

Marsh Posté le 25-11-2005 à 13:33:56    

mais ptet que ta solution de mettre les clients en attente n'est pas forcément la meilleure [:icon12]
 
(et j'aurais meme tendance à dire que c'est une des pires ! je sais pas moi, si je me connecte à un serveur IRC par exemple, ça me ferait chier d'attendre des plombes que tous les gusses devant moi soient connectés. et je te parle pas des éventuels timeout)


Message édité par Harkonnen le 25-11-2005 à 13:34:10

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-11-2005 à 14:47:03    

bah disons que ta pas tord mais sachant que mon logiciel est reserveé a environ 100 personnes et que la connection pour une personne met environ 1 seconde avec la probabilité que 2 ou 3 ou 10 personnes se connectent en mm tps, à mon avis tu verras pas le tps paC..
 
En gros au max t'attendra 100 secondes....
 
Mais si ta d'autre solution elles sont les bienvenues...
 
Merci

Reply

Marsh Posté le 25-11-2005 à 14:47:03   

Reply

Marsh Posté le 25-11-2005 à 15:01:42    

fdiedler a écrit :


En gros au max t'attendra 100 secondes....


[:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-11-2005 à 16:29:21    

Reply

Marsh Posté le 25-11-2005 à 16:31:26    

ben attendre 100 secondes.... t'as pas l'impression que ça fait un peu beaucoup [:petrus dei]

Reply

Marsh Posté le 25-11-2005 à 19:32:43    

fdiedler a écrit :

De quoi ??  :??:  :??:


Le seul et unique truc que j'autorise à me faire attendre 100s avant une connection, c'est mon client FTP.. et encore il a intérêt à avoir une très bonne raison [:itm]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-11-2005 à 21:26:00    

ouais d'acc je veux bien admettre que 100s c'est bcp mais voila....
ca me dit tjrs pas comment résoudre mon pb !!

Reply

Marsh Posté le 27-11-2005 à 09:43:11    

bordel tu es bouché toi...
 
si ton serveur était bien fait, ça marcherait tout simplement. En plus, C# met automatiquement des threads en place. Tu code est tout simplement mal foutu...
 
Pour ton info, tout language .NET est semblable, alors si tu ne sais pas lire des sources C# .NET laisse tombé. Car il reste que très peu de programmeur VB.NET...

Reply

Marsh Posté le 27-11-2005 à 12:24:46    

moi23372 a écrit :

bordel tu es bouché toi...
 
si ton serveur était bien fait, ça marcherait tout simplement. En plus, C# met automatiquement des threads en place. Tu code est tout simplement mal foutu...
 
Pour ton info, tout language .NET est semblable, alors si tu ne sais pas lire des sources C# .NET laisse tombé. Car il reste que très peu de programmeur VB.NET...


Et mais T un ennervé de sevice toi calme toi un peu !!
D'abord mon serveur bien fait et je sais traduite du C# au .net...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed