Bonjour,
viola j'ai tenté de faire mon premier programme réseau, et ça fonctionne plutôt bien, mais plutôt seulement ... :mouarf:
j'essaie d'envoyer un joli petit "hello world" et tout ce que je reçois c'est "hell" :aie:
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 :
client.hppCode:
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; };
et voila ce qui peut être utile :Code:
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
Code:
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.......... [ -] ) :lol: