Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - JulienEragon

Pages: [1]
1
Réseau / Re : Récupérer l'ip d'un client dans un selector.
« le: Juin 04, 2012, 02:51:22 pm »
Effectivement, erreur toute bête ^^

Merci de m'avoir aidé  :)

2
Réseau / Re : Récupérer l'ip d'un client dans un selector.
« le: Juin 04, 2012, 02:30:59 pm »
J'ai toujours pas résolu mon problème =/ Je vois pas comment utiliser la map. J'ai essayé quelque chose comme ça :

while (true)
{
        unsigned int NbSockets = Selector.Wait();
   
        std::map<sf::SocketTCP, sf::IPAddress> Sockets;

        for (unsigned int i = 0; i < NbSockets; ++i) {

                SocketTCPPerso Socket = Selector.GetSocketReady(i);

                sf::IPAddress Address;
                if (Socket == Listener) {

                        sf::SocketTCP Client;
                        Listener.Accept(Client, &Address);
                        std::cout << "Server " << Address << " connected." << std::endl; // affiche la bonne IP
                        Sockets[Client] = Address;

                        Selector.Add(Client);
                }
                else {
                        sf::Packet Packet;
                        if (Socket.Receive(Packet) == sf::Socket::Done) {

                                std::string operation;
                                Packet >> operation;

                                std::cout << "nb ips : " << Sockets.size() << std::endl; // affiche 0
                               
                                std::string ipAddress = Sockets.find(Socket)->second.ToString();
                               
                                std::cout << "ip : " << ipAddress << std::endl; // affiche 0.0.0.0

                        }
                        else {
                                Selector.Remove(Socket.socketTCP);
                        }
                }
        }
}

Le soucis est que la map est vide à l'endroit où je veux avoir l'ip...

3
Réseau / Re : Récupérer l'ip d'un client dans un selector.
« le: Juin 03, 2012, 10:25:48 pm »
Tu veux dire quelque chose comme ça ?

while (true)
{
       unsigned int NbSockets = Selector.Wait();

        for (unsigned int i = 0; i < NbSockets; ++i) {

                SocketTCPPerso Socket = Selector.GetSocketReady(i);

                sf::IPAddress Address;
                sf::IPAddress ipClient;
                if (Socket == Listener) {

                        sf::SocketTCP Client;
                        Listener.Accept(Client, &Address);
                        std::cout << "Server " << Address << " connected." << std::endl; // affiche la bonne IP
                        ipClient = Address;

                        Selector.Add(Client);
                }
                else {
                        sf::Packet Packet;
                        if (Socket.Receive(Packet) == sf::Socket::Done) {

                                std::string operation;
                                Packet >> operation;

                                std::cout << "ip : " << ipClient << std::endl; // affiche 255.255.255.255

                        }
                        else {
                                Selector.Remove(Socket.socketTCP);
                        }
                }
        }
}

J'ai déjà essayé ça ne marche pas plus =/

Pour ce qui est d'utiliser SFML 2, ça ne va pas être possible ^^ Je suis presque au bout de mon projet et vu le temps qu'il me reste pour le finir, je ne peux pas tout reprendre.

4
Réseau / Récupérer l'ip d'un client dans un selector.
« le: Juin 03, 2012, 09:19:13 pm »
Bonjour  :)

Je souhaite avoir l'ip du client connecté lorsque j'utilise un SelectorTCP. Voici le code, tout simple :

while (true)
{
       unsigned int NbSockets = Selector.Wait();

        for (unsigned int i = 0; i < NbSockets; ++i) {

                SocketTCPPerso Socket = Selector.GetSocketReady(i);

                sf::IPAddress Address;
                if (Socket == Listener) {

                        sf::SocketTCP Client;
                        Listener.Accept(Client, &Address);
                        std::cout << "Server " << Address << " connected." << std::endl; // affiche la bonne IP

                        Selector.Add(Client);
                }
                else {
                        sf::Packet Packet;
                        if (Socket.Receive(Packet) == sf::Socket::Done) {

                                std::string operation;
                                Packet >> operation;

                                std::cout << "ip : " << Address << std::endl; // affiche 255.255.255.255

                        }
                        else {
                                Selector.Remove(Socket.socketTCP);
                        }
                }
        }
}

Comme vous pouvez le voir, je veux avoir l'ip du client là où on reçoit et traite le Packet. Ce que je ne comprend pas c'est que l'ip affichée est la bonne un peu plus haut, mais pas à l'endroit où je veux.

Comment faire ?

Merci d'avance  :)

Pages: [1]
anything