Bonjour,

viola j'ai tenté de faire mon premier programme réseau, et ça fonctionne plutôt bien, mais plutôt seulement ...


j'essaie d'envoyer un joli petit "hello world" et tout ce que je reçois c'est "hell"
Je sais pas si Satan essaie de m'envoyer un message, mais sinon on dirait bien que mon programme ne peut pas envoyer plus de 4 caractères...

je penses que c'est une erreur classique, genre problème de copie ou autre, mais je vous avoue que je comprend pas.

server.hpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
#ifndef DEF_SERVER_HPP
#define DEF_SERVER_HPP
 
 
#include <SFML/Network.hpp>
#include <iostream>
#include <string>
 
typedef std::pair <sf::Socket::Status, sf::SocketTCP> infoSocketClient;
 
class Server
{
    public :
        Server(sf::SocketTCP listener, unsigned short port);
        ~Server();
        infoSocketClient WaitForConnection(std::string *clientAddress);
        sf::SocketTCP GetListener();
        unsigned short GetPort();
        void ReceiveMsg(sf::SocketTCP* Client);
 
 
 
    private :
    void error(std::string msg, int* valeur=NULL)
    {
        if (valeur==NULL)
            std::cout << msg << std::endl;
        else
            std::cout << msg << *valeur << std::endl;
    }
 
        sf::SocketTCP listener;
        unsigned short port;
 
};
client.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
#ifndef DEF_CLIENT_HPP
#define DEF_CLIENT_HPP
 
#include <SFML/Network.hpp>
#include <iostream>
 
class Client
{
    public :
        Client(unsigned short port, sf::SocketTCP client,  sf::IPAddress serverAddress);
        ~Client();
        sf::Socket::Status ConnectToServer();
        void SendMsg(char* msg);
 
 
    private :
        void error(std::string msg, int* valeur=NULL)
        {
            if (valeur==NULL)
                std::cout << msg << std::endl;
            else
                std::cout << msg << *valeur << std::endl;
        }
        unsigned short port;
        sf::SocketTCP client;
       sf::IPAddress serverAddress;
 
 
};
 
#endif
et voila ce qui peut être utile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
void Client::SendMsg(char* msg)
{
    if (client.Send(msg, sizeof(msg)) != sf::Socket::Done)
    {
        // Erreur...
    }
}
 
void Server::ReceiveMsg(sf::SocketTCP* Client)
{
    char message[128];
    std::size_t Received;
    switch (Client->Receive(message, sizeof(message), Received))
    {
        case sf::Socket::Done :
            std::cout << message << std::endl;;
            break;
        case sf::Socket::NotReady :
            error("pas de connexion");
            break;
        case sf::Socket::Error :
            error("erreur de connexion");
            break;
        case sf::Socket::Disconnected :
            error("deconnecte");
            break;
        default : break;
    }
 
}
 
et dans mon main : 
 
//cote client
std::string test;
        cout << "message ? ";
        cin >> test;
        char *Msg = (char*)malloc(sizeof(test));
        strcpy(Msg, test.c_str());
 
        client.SendMsg(Msg);
 
 
//cote server
        infoSocketClient info = server.WaitForConnection(&addresse);
 
        if ( info.first == sf::Socket::Done)
        {
            server.ReceiveMsg(&info.second);
        }

voila je suis à votre écoute ... (bande de ports.......... [ -] )