C++ Serveur web

kiki67100 Messages postés 313 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 10 août 2013 - 26 juin 2007 à 19:06
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 27 juin 2007 à 06:11
Bonjour J'ai commencé a faire un serveur Pour affiché du texte sur le client Voici le code

#include <winsock2.h>
#include <windows.h>
#include <cstdlib>
#include
c

int main()
{
  
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr            = INADDR_ANY;
sin.sin_family        = AF_INET;
sin.sin_port                = htons(4662);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);

while(1)
{

int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
printf("Nouveau client connecter\n");
char text[200]="Bienvenue sur le serveur de =====>kiki67100<===== \n "; //J'aimerais que ses texte sois lisible sous les NAV ,FireFox,IE ect..
send(csock, text, sizeof(text), 0);
closesocket(csock);
(csock,"100");
}
}
}

Sous firefox sa me donne un Fichié a telechargé en .BIN Sous IE 6.0 sa me donne le texte Sous IE.7.0 sa maffiche rien
J'espere que vous pouriez maider
Merci

Kevin

3 réponses

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
26 juin 2007 à 20:58
Un serveur web attend que le client envoie une requête HTTP pour identifier la ressource à envoyer, ensuite il envoie son header HTTP en précisant au moins le content-type et le content-length, envoie une ligne vide pour marquer la fin du header. Puis il envoie le contenu du fichier. Voir RFC 2616.


len= sprintf(paquet, "HTTP/1.1 200 OK\n"
"Content-Length:30\n"
"Content-type:text/html\r\n"
"\r\n"
"Fin de la connection.
");
n = send(sock, paquet, len, 0);
if (n != len) erreur;

Le serveur doit aussi gérer plusierus connections simultanées, il faut
donc dès à présent choisir un modèle d'I/O pour le serveur: threads,
multiplexage d'entrée/sorties synchrone, sockets non bloquants etc...
0
kiki67100 Messages postés 313 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 10 août 2013 1
26 juin 2007 à 23:47
Merci
sa marche en local mais quand je donne le liens a quelqun :s sa marche pas
A affiche La page na pas pus s'affiché mais sinon en local sa marche impec merci

Kevin
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
27 juin 2007 à 06:11
Les navigateurs HTTP se connectent par défaut par le port 80: s'assurer qu'il est ouvert sur le routeur/firewall et corriger le code qui écoute sur le 4662. Toujours vérifier les codes de retour des fonctions bind() et listen(). Ton serveur va rapidement gagner quelques centaines de lignes de code.

I can break the rules too, goodbye.
0
Rejoignez-nous