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 :
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
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 : 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
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.......... [ -] )![]()
Partager