Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: Macrob le Septembre 07, 2013, 11:42:09 am

Titre: Question générale sur le réseau local
Posté par: Macrob le Septembre 07, 2013, 11:42:09 am
Salut à tous,

Une question un peu générale, mais en sachant que j'utilise uniquement les fonctions réseau
de la SFML.

J'ai un cas simple de petit jeu multijoueur avec un serveur et des applications clientes.

Ma question est la suivante : est-ce que plusieurs applications clientes peuvent être lancées sur le même ordinateur en même temps sans interférer ?
En effet elles auront la même adresse locale... et de fait je n'ai aucun problème tant que j'ai sur le même ordinateur le serveur et 1 client qui tournent en même temps, mais dès que je passe à 2 clients ça foire.

Si je reste trop vague n'hésitez pas à me demander des détails essentiels pour m'aider.

Merci d'avance !  :)
Titre: Re : Question générale sur le réseau local
Posté par: Laurent le Septembre 07, 2013, 12:07:45 pm
Ca dépend comment tu gères tes clients. Si c'est par adresse IP, forcément ça va bloquer ;)

Mais normalement ça marche bien, chaque client est sur son propre port, y a pas de problème a en lancer autant que tu veux sur la même machine.
Titre: Re : Question générale sur le réseau local
Posté par: Macrob le Septembre 07, 2013, 07:43:03 pm
Ah je vois :)

J'ai une fonction pour ajouter un client quand le serveur détecte une connexion :

void ajouterClient(sf::TcpSocket *nouveauClient)
{
    cout << "Un nouveau client s'est connecte" << endl;
    cout << "Adresse : " << nouveauClient->getRemoteAddress() << endl;

    m_selector.add(*nouveauClient);
    m_clients.push_back(nouveauClient);

    nouveauClient->setBlocking(true);

    sf::Packet paquet;
    paquet << m_clients.size()-1;
    if(nouveauClient->send(paquet) != sf::Socket::Done)
    {
        // erreur
    }

}

Je ne pense pas faire intervenir les adresses IP. Ce qui m'intrigue c'est que les soucis n'arrivent que quand je lance un autre client sur le même ordinateur.
Dès que j'ai la possibilité j'essayerai avec 2 ordis pour voir  :)
Titre: Re : Question générale sur le réseau local
Posté par: Laurent le Septembre 07, 2013, 08:50:46 pm
Et si tu commençais par le commencement ? Qu'est-ce qui ne marche pas exactement ?
Titre: Re : Question générale sur le réseau local
Posté par: Macrob le Septembre 08, 2013, 11:39:43 am
Hélas je crains que je sois le seul à pouvoir m'aider (à moins de vous balancer tout mon code :P)
Apparemment c'est le 2ème client qui se fige, si ça se trouve ce n'est pas le réseau qui pose problème, faut que j'enquête...
Merci pour l'aide en tout cas :)
Titre: Re : Question générale sur le réseau local
Posté par: Laurent le Septembre 08, 2013, 11:51:37 am
Juste un conseil : n'envoie pas une tuile par paquet, c'est extrêmement inefficace :o
Construis un paquet contenant tout ce que tu veux envoyer, puis fais un seul envoi.
Titre: Re : Question générale sur le réseau local
Posté par: Macrob le Septembre 08, 2013, 01:31:59 pm
Ah merci beaucoup pour le conseil !
Donc même si j'ai un tableau de 2000 tuiles (en fait des unsigned int), je peux l'envoyer en un seul paquet ?
Titre: Re : Question générale sur le réseau local
Posté par: Laurent le Septembre 08, 2013, 01:45:47 pm
Ben oui. Pourquoi pas ?
Titre: Re : Question générale sur le réseau local
Posté par: Macrob le Septembre 08, 2013, 08:00:55 pm
Je sais pas, ça me paraît très gros  ;D
C'est là que je vois bien les limites quand on essaye d'apprendre seul : on passe à côté de pas mal de choses !