Bonjour à tous,
Je viens vous demander de l'aide pour tenter de me débloquer sur un problème dont je ne vois pas l'origine.
Concrètement, je ne comprend pas pourquoi mon programme arrive à lancer et recevoir un premier paquet mais ensuite il refuse catégoriquement d'en envoyer d'autres...
Voici donc mon programme en 2 parties :
Connection.h
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 #include <SFML/Graphics.hpp> #include <SFML\Network.hpp> #include <iostream> #include <sstream> sf::TcpSocket socket; sf::IpAddress ip = sf::IpAddress::getPublicAddress(); sf::TcpListener listenner; sf::Packet packet; sf::Http http("---ADRESSE DE MON SERVEUR---"); sf::Http::Request request; sf::Http::Response response; std::ostringstream stream; sf::Socket::Status status; char choix, mode = 'n'; char buf[2000]; std::string text,textRep; std::string repServ, ligne; void connection(){ request.setMethod(sf::Http::Request::Post); std::cout << "Votre ip : " << ip << std::endl; std::cout << "Etre le Serveur : s | Etre le Client : c" << std::endl; std::cin >> choix; if (choix == 'c'){ mode = 's'; std::cout << "Vous etes un Client" << std::endl; std::cout << "CONNEXION EN COURS..." << std::endl; request.setUri("/index.php"); response = http.sendRequest(request); repServ = response.getBody(); std::istringstream lin(repServ); std::cout << "RECHERCHE DE SERVEUR EN COURS..." << std::endl; std::getline(lin, ligne); status = socket.connect(ligne, 2000); while (status != sf::Socket::Done){ std::getline(lin, ligne); if (ligne == ""){ std::cout << "Aucun serveur disponible" << std::endl; break; } status = socket.connect(ligne, 2000); } text = "Connection avec le client reussi !"; packet << text; } else if (choix == 's'){ mode = 'r'; std::cout << "Vous etes le serveur" << std::endl; request.setUri("/addServ.php"); stream << "ip=" << ip; request.setBody(stream.str()); response = http.sendRequest(request); std::cout << "RECHERCHE D'UN CLIENT EN COURS..." << std::endl; listenner.listen(2000); listenner.accept(socket); std::cout << "SOCKET ACCEPTE" << std::endl; text = "CECI EST ENVOYE DEPUIS LE SERVEUR"; packet << text; } else{ std::cout << "OKTAMER" << std::endl; } } void decoBdd(std::string ipp){ request.setUri("/delServ.php"); response = http.sendRequest(request); }
Source.cpp
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 #include <SFML/Graphics.hpp> #include <SFML\Network.hpp> #include <iostream> #include <sstream> #include <string> #include "TileMap.h" #include "Connection.h" //sf::RenderWindow window(sf::VideoMode(800, 600), "Test MAP !"); //TileMap map; int main() { /*const int maap[] = { 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154 }; map.load("tiles.png", sf::Vector2u(32, 32), maap, 22, 7); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(map); window.display(); }*/ connection(); socket.send(packet); socket.receive(packet); packet >> textRep; std::cout << textRep << std::endl; std::cin.ignore(); decoBdd(ligne); std::cout << "--<§> TCHAT TEST <§>--" << std::endl; std::cout << "Envoyer '-1' pour quitter le Tchat" << std::endl; while (text != "-1"){ text=""; textRep=""; sf::Packet packet2; if (mode == 's'){ std::cout << "VOTRE TEXT : " << std::endl; std::getline(std::cin, text); packet2 << text; if (socket.send(packet2)){ mode = 'r'; } else{ std::cout << "ERREUR DANS L'envoie" << std::endl; } } else if (mode == 'r'){ socket.receive(packet2); std::cout << "A" << std::endl; if (packet2 >> textRep){ std::cout << "B" << std::endl; std::cout << textRep << std::endl; std::cout << "C" << std::endl; mode = 's'; } else{ std::cout << "ERREUR DANS LA RECEPTION" << std::endl; } } else{ return 0; } std::cout << "---------------" << std::endl; } std::cout << "CONNEXION TERMINEE" << std::endl; system("pause"); return 0; }
Merci infiniment d'avance !
Cdlm,
Partager