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 - Rodd

Pages: « Précédente 1 2 [3]
31
Graphique / Re : Problème de sf::Text et sf::Thread
« le: Décembre 27, 2012, 12:54:10 am »
C'était bien ça, merci beaucoup =) ca marche parfaitement.

32
Graphique / [Résolu] Problème de sf::Text et sf::Thread
« le: Décembre 26, 2012, 02:01:57 am »
Bonjour, j'ai un problème au niveau du draw(sf::Text), lorsque ce text est modifié dans un thread, il ne se draw pas bien (il manque tout les chiffres sauf le 0)

En code:
//DANS UN THREAD HORS CLASS
void Updater::downloadFtp()
{
    bar.updatePercentage(100);
}

void ProgressBar::updatePercentage(const float& value)
{
    std::ostringstream stream;
    stream << this->value;
    text.setString(stream.str()+"%");
    std::cout<<text.getString().toAnsiString()<<std::endl; //Affiche toujours les bons chiffres dans la console.

    text.setOrigin((int)(text.getGlobalBounds().width/2),(int)(text.getGlobalBounds().height/2));
    text.setPosition(50+(int)(this->value*5), 63);
}

//C'est la seule modification du text qui existe. :(
// Le seul moment où on appelle le text est pour ce code :

//CODE SE TROUVANT DANS UNE FONCTION DE LA CLASSE ProgressBar
{
     window.draw(text);
}
 

Ainsi on peut lire que les chiffres 0 et le % dans la fenetre ..
Pour 10 -> 0%
Pour 93 -> %
Pour 100 -> 00%
Mais correctement dans la console.

Donc..
- Si j'utilise updatePercentage() dans sa propre classe, tout s'affiche correctement.
- Que j'utilise updatePercentage() avec le thread ou avec la classe, le code : std::cout<<text.getString().toAnsiString()<<std::endl; affiche toujours le bon chiffre dans la console.



Voilà, merci de votre aide, je comprends pas ce que j'ai fais de travers.. :(

33
Réseau / Re : [sf::SocketSelector] Problèmes d'utilisations.
« le: Décembre 10, 2012, 11:56:01 am »
J'aimerais mettre cette boucle en bloquant dans un thread effectivement. Mais je n'ai jamais manipulé de thread auparavant et j'ai du mal à bien l'intégrer dans un code.

Dans ce cas-ci, si je fais un thread en bloquant pour cette boucle, ca bloquerait la fonction dans laquelle elle se trouve vu que j'aurai mis un thread.wait( ) et avec mon utilisation de "  .pollEvent(event) display() " en simultané, ca bloquerait le programme à l'utilisateur non ?

-> À moins que je fasse en sorte que cette boucle soit indépendante à la boucle d'action de l'utilisateur .. hm. Je vais tenter de modifier quelques trucs, ca peut être bien. Dites moi si je me trompe !

Merci pour les explications :)

34
Réseau / [sf::SocketSelector] Problèmes d'utilisations.
« le: Décembre 10, 2012, 01:58:27 am »
Bonjour à tous,

j'ai quelques soucis sur le fonctionnent d'un SocketSelector.. :( Je m'explique...
En réalité j'ai du mal à comprendre l'utilité réel d'un selector. Si j'ai bien compris, avant il serait à mettre le socket sur le devant de la liste lorsqu'il y a réception d'un packet. non ? Et que maintenant il ne sert qu'à signaler qu'il y a un socket qui a recu un packet non ?

En gros, actuellement j'ai mon programme qui fonctionne de cette manière :


//CECI N'EST QU'UNE PARTIE DE MON CODE
void newConnected()
{
    sf::TcpSocket* client = new(sf::TcpSocket);
    if(serverTcp.accept(*client) == sf::Socket::Done){
        std::cout<<"New connection received from "<<client->getRemoteAddress()<<std::endl;
        clients.push_back(client);
        selectorTcp.add(*client);}
    else{
        delete client;}
}

void online()
{
    newConnected();

    if(selectorTcp.wait(sf::microseconds(1))){
        for(int x=clients.size()-1; x>=0; --x){
            sf::TcpSocket* client = clients.at(x);
            if(selectorTcp.isReady(*client)){
                sf::Packet packet;
                sf::Socket::Status status= client->receive(packet);
                if(status == sf::Socket::Done){
                    analysis(packet);}
                else{
                    std::cout<<"Probleme de reception"<<std::endl;}}}}
}
 

Mais l'inconvénient de ce code, c'est qu'il parcourt tout les sockets actuellement connecté pour vérifier lequel est prêt. Non ?

Voilà, j'ai besoin de quelques éclaircissements pour comprendre mieux le fonctionnement de cette fonction ou si il ya clairement moyen de mieux faire que cette méthode s'il vous plait :(

Le but étant de pouvoir tenir un transfert rapide entre les clients et le serveur pour au moins 10 personnes.

Merci beaucoup!

35
Réseau / Re : [SFML2] Connexion NotReady
« le: Septembre 06, 2012, 09:12:36 pm »
Effectivement je viens de revérifier mon code de test et c'est une erreur de ma part.

Un grand merci pour ton aide =)

36
Réseau / Re : [SFML2] Connexion NotReady
« le: Septembre 06, 2012, 08:19:46 pm »
Merci beaucoup, ça marche super maintenant !

J'ai une dernière petite question avant de clôturer le sujet comme résolu..
Lorsqu'on essaye de mettre en place un serveur Udpsocket, on doit supprimer/recréer un nouveau Udpsocket après chaque donnée reçue ? Ou on peut utiliser le même socket lié au port à chaque tour de boucle ? :)

Merci !

37
Réseau / Re : [SFML2] Connexion NotReady
« le: Août 26, 2012, 06:05:29 pm »
http://img51.imageshack.us/img51/47/62424894.png

Pourtant il me semblait avoir bien ouvert mon port. Il faut un certain délai ou un reboot du routeur pour que ca soit effectif ?

Qu'entendez-vous par après ? Je refais une même connexion par après ?

38
Réseau / Re : [SFML2] Connexion NotReady
« le: Août 26, 2012, 05:44:37 pm »
Je précise que je suis en non-bloquant =)

39
Réseau / [SFML2] Connexion NotReady (Résolu)
« le: Août 26, 2012, 05:31:52 pm »
Bonjour à tous, je débute sfml dans le réseau mais je ne suis pas tombé sur un bug bloquant. Plutôt une mauvaise utilisation faut croire..

Voilà le problème. J'ai crée un serveur et un client, deux programmes différent. La connexion fonctionne mais uniquement sur le réseau local.

//Client
std::cout<<"Connecting ... ";
sf::Socket::Status soso = client.connect(address, 33033);
if(soso == sf::Socket::Done){
    std::cout<<"Done";}
else if(soso == sf::Socket::AnyPort){
    std::cout<<"Anyport";}
else if(soso == sf::Socket::Disconnected){
    std::cout<<"Disconnected";}
else if(soso == sf::Socket::Error){
    std::cout<<"Error";}
else if(soso == sf::Socket::NotReady){
    std::cout<<"NotReady";}
else{
    std::cout<<"WTF?";}
 

Lorsque je rentre mon IP internet à la place d'address, rien ne se passe. Mais lorsque je tape "127.0.0.1", la connexion se fait, et donc je peux envoyer des données et en recevoir sans aucun problème mais lors de la connexion ce n'est pas "Done" qu'il s'écrit mais bien "NotReady".

Donc:
  • "127.0.0.1" fonctionne parfaitement mais affiche NotReady à la connexion.
  • L'adresse par internet ne fonctionne pas = aucune connexion détectée.


Comment se fait-il ? Merci de votre explication. :)

Pages: « Précédente 1 2 [3]