1
Réseau / Re : [Résolu] Sockets TCP connectées mais envoi/reception impossible
« le: Août 14, 2014, 09:24:58 pm »
Salut, je me suis permit d'utiliser ton système pour apprendre sur le réseau.
J'ai donc copier/coller ton code et essayé de le modifier pour ne pas avoir l'erreur que tu avais, le problème c'est que j'ai fait une allocation dynamic pour ne pas détruire le socket.
J'ai fait ceci :
Mais lorsque je compile, j'ai pas mal d'erreur par rapport au vector du genre :
J'ai alors modifié ceci :
Et maintenant la seule erreur est celle-ci :
Donc voilà je voulais savoir, pourquoi dans ton code tu stockes l'adresse du socker. Et aussi savoir pourquoi j'ai cette erreur lorsque je mais dans mon tableau la valeur du socket.
J'ai donc copier/coller ton code et essayé de le modifier pour ne pas avoir l'erreur que tu avais, le problème c'est que j'ai fait une allocation dynamic pour ne pas détruire le socket.
J'ai fait ceci :
vector<TcpSocket> m_socketVector; // La déclaration du tableau est hors du main.
TcpSocket *p_socket = new TcpSocket; // Je crée un pointeur pour faire une allocation dynamic.
m_socketVector.push_back(p_socket); // Ici j'incrémente mon tableau avec la valeur de mon pointeur qui pointe vers l'adresse du socket.
if(listener.accept(m_socketVector[readyClients]) != sf::Socket::Done) // Ici j'ai enlevé le '*' parce-que je ne comprend pas pourquoi il fallait l'adresse de la case mémoire du tableau alors que la valeur c'est l'adresse du socket.
{
cout << "Aucun client essai de rejoindre le réseau." << endl;
}
TcpSocket *p_socket = new TcpSocket; // Je crée un pointeur pour faire une allocation dynamic.
m_socketVector.push_back(p_socket); // Ici j'incrémente mon tableau avec la valeur de mon pointeur qui pointe vers l'adresse du socket.
if(listener.accept(m_socketVector[readyClients]) != sf::Socket::Done) // Ici j'ai enlevé le '*' parce-que je ne comprend pas pourquoi il fallait l'adresse de la case mémoire du tableau alors que la valeur c'est l'adresse du socket.
{
cout << "Aucun client essai de rejoindre le réseau." << endl;
}
Mais lorsque je compile, j'ai pas mal d'erreur par rapport au vector du genre :
Erreur 1 error C2664: 'void std::vector<_Ty>::push_back(sf::TcpSocket &&)' : impossible de convertir le paramètre 1 de 'sf::TcpSocket *' en 'sf::TcpSocket &&'.
J'ai alors modifié ceci :
m_socketVector.push_back(*p_socket);
Et maintenant la seule erreur est celle-ci :
Erreur 1 error C2248: 'sf::NonCopyable::NonCopyable' : impossible d'accéder à private membre déclaré(e) dans la classe 'sf::NonCopyable'.
Donc voilà je voulais savoir, pourquoi dans ton code tu stockes l'adresse du socker. Et aussi savoir pourquoi j'ai cette erreur lorsque je mais dans mon tableau la valeur du socket.