MFC client serveur CAsyncSocket

Signaler
Messages postés
2
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
12 mars 2009
-
Messages postés
2
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
12 mars 2009
-
Bonjour à tous !
Voici mon problème, je développe un programme qui à pour but de gérer la communication entre un serveur est plusieurs clients, mais le problème est que mon serveur n'accepte pas plusieurs connexion de clients, je ne sais pas si le problème viens de mon serveur ou de mon client qui bloque le serveur.
Pour la connexion de mon serveur j'utilise la méthode OnAccept(), qui est dans la classe SocketService qui dérive de CAsyncSocket :

void CSocketServeur::OnAccept(int CodeErreur)
{
// le serveur accepte les connexions

CSocketService *m_SocService = new CSocketService;

if(Accept(*m_SocService))
{
AfxMessageBox("Client connecté ");
}
else
{
delete m_SocService;
}

CAsyncSocket::OnAccept(CodeErreur);
}
ensuite dans une autre classe qui dérive de CAsyncSocket : CSocketServeur, j'ai le OnReceive() suivant :
void CSocketService::OnReceive(int CodeErreur)
{
TCHAR buffer[50];
CString m_strReception;
int nbRead = Receive(buffer, 50);
buffer[nbRead] = 0;
CString taille(buffer);
m_strReception += taille; //additionne les 2 valeurs et la place dans la variable de gauche

if(m_strReception == "quit")
{
ShutDown();
AfxMessageBox("Client déconecté");
}
else
{
AfxMessageBox(m_strReception);
}
CAsyncSocket::OnReceive(CodeErreur);
}
Voila pour mon serveur.
Ensuite je voudrai avoir des informations si possible sur le clients car je n'utilise pas du tout les fonctions OnClose() et tout ... Je voudrai aussi savoir comment les implémenter si il y en a besoin.
Pour mon client j'utilise juste les fonctions suivante :
ipconfig est un objet de CSocketService qui dérive de CAsyncSocket et qui est utilisé dans Monprojet.Dlg .
Pour crée la connexion :
socket = ipconfig.Create(SOCK_STREAM) ;
socket = ipconfig.Connect(m_ip, m_port);
Pour l'envoie de donnée :
ipconfig.Send(m_texte,strlen(m_texte));
Pour la fermeture :
ipconfig.Close();

Aidez moi svp !!!!

2 réponses

Messages postés
54
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
15 août 2015

il manque un bout code de connection?

 socket_result= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     
        server_ip = new char [strlen(ip)+1];
        strcpy(server_ip, ip);
        server_port = port;
        address.sin_family = AF_INET;
        address.sin_addr.s_addr = htonl(INADDR_ANY);
      
  bind(socket_result, (LPSOCKADDR)&address, sizeof(address)))
        
   
       listen(socket_result, 10))  <- listen te permet ici 10 client?
       

 
Messages postés
2
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
12 mars 2009

En faite je fait juste un dans mon projetDlg.cpp :
BOOL Csocket_serveurv3Dlg::OnInitDialog()
{
.................
// Création et mise en écoute
m_Serveur.Create(5001);
m_Serveur.Listen();
}
Normalement le Listen() permet 5 clients par défaut enfin je pense, et là impossible d'avoir plus de 1 connexion.

Tu crois que le problème viens d'ici ?