Bonjour,

J'ai code un serveur en c++ et j'utilise le navigateur web firefox comme client.
J'au prealable code ma page web en javascript.
Lorsque j'execute une action sur cette page web j'envoie une requete a mon serveur, qui la recoit parfaitement.
Mon probleme se situe dans l'envoi des donnees du serveur au client, pour envoyer les donnees j'ultilise la fonction send(). Je souhaite envoyer du html par exemple pour changer le titre mais rien ne s'affiche.


Voici mon serveur
Code : C++

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
int main(int argc, char** argv)
{
GetRGBValue2();
std::cout << "Slice Server Start\n******************\n" << std::endl;
pthread_mutex_init(&m_SocketMutex, NULL);
 
// Create Basic Data
int sockfd, on;
struct sockaddr_in self;
char buffer[BUFSIZE];
 
// Create a socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
 
// Setup the socket
bzero(&self, sizeof(self));
self.sin_family = AF_INET;
self.sin_port = htons(SVRPORT);
self.sin_addr.s_addr = INADDR_ANY;
 
// Allow address re-use so that bind has a better cnance
on = 1;
setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );
 
// Give our little socket a number
if(bind(sockfd, (struct sockaddr*)&self, sizeof(self)) == -1)
{
std::cout << "ERROR: Socket bind failed" << std::endl;
}
 
// Make it a server
listen(sockfd, 20);
 
// Loop the server for eternity
while (1)
{
struct sockaddr_in client_addr;
socklen_t addrlen=sizeof(client_addr);
 
// Accept connections
pthread_mutex_lock(&m_SocketMutex);
m_Clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen);
pthread_mutex_unlock(&m_SocketMutex);
 
std::cout << inet_ntoa(client_addr.sin_addr) << ":" <<
ntohs(client_addr.sin_port) << " Connected" << std::endl;
 
// Receive the data
int msg_size = recv(m_Clientfd, buffer, BUFSIZE, 0);
 
// Print data
buffer[msg_size] = '\0';
 
// Process data
char request[255];
char http_ver[255];
sscanf(buffer,"GET %s %s",&request,&http_ver);
cout<<"buffer: "<<buffer<<endl;
std::cout << request << " " << http_ver << std::endl;
std::vector<std::string> tokens;
std::string str(request);
// This does sends reply
ParseGet(request,m_Clientfd);
 
// Disconnect the client. He's had enough
close(m_Clientfd);
}
} // end main
et voici ma fonction d'envoie des donnees
Code : C++

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
void ParseGet(std::vector<std::string> request, int clientfd)
{
// j'ai enleve le debut de ma fonction pour ne garder que la partie liee a mon probleme
std::string header ("HTTP/1.0 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 48\r\n\r\n<html><head><title>titre</title></head></html>\r\n") ;
send(m_Clientfd, header.c_str(), header.size(), MSG_NOSIGNAL);
 
}
J'ai tlecharge le plugin Live HTTP header qui me montre que l'entete que je viens d'envoyer arrive correctement. Mais mon nouveau titre ne s'affiche pas.
De plus rien n'est modifie en ouvrant la page source de ma page web.

Merci pour votre aide!