steph12358
Messages postés149Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention10 décembre 2009
-
3 oct. 2007 à 11:21
steph12358
Messages postés149Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention10 décembre 2009
-
4 oct. 2007 à 10:02
Bonjour
Je débute en C++ Builder 5 et dans le cadre d'un projet avec interface web je dois
développer un mini serveur HTML et multithread en plus (je dois pouvoir gérer plusieurs connexions)
J'ai fait de nombreuses recherche sur Google mais les exemples trouvés sur le net ne sont pas portables dans cet environnement. Il en existe une pléthore sous delphi mais sous c++ builder que Pouic !
Quelqu'un a t'il des infos à ce sujet car je rame sévérement
tout ce que je sais pour l'instant c'est que je dois, à priori, utiliser un composant TServerSocket mais je doute de pouvoir faire du multithread avec ça.
PS : Je n'ai pas mis "au secours" dans le titre du sujet mais bon...
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 3 oct. 2007 à 13:14
Bonjour,
Apparemment te faudra tout.
Tu devrais regarder un exemple de code fait sous delphi par exemple et ensuite essayer de traduire ça en C++
l'autre solution c'est tout faire toi meme mais si tu débutes en C++ ça risque d'être chaud, mais bon dans tous les cas faut que tu regardes la doc de TServerSocket et tout ce qui a trait aux sockets et dans l'API que tu utilises, le multithread après c'est pas lié aux sockets que tu utilises. fais pour le moment un truc monothread et après tu verras.
steph12358
Messages postés149Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention10 décembre 20091 4 oct. 2007 à 10:02
Bonjour the_guardian
L'aide de Borland C++ Builder c'est vraiment la misère et Google me renvoie sur des sites en japonais, allemand, roumain etc... A croire que les anglais et les français n'éprouvent pas le besoin de réinventer la poudre
Après de nouvelles recherches donc et pour prouver que je n'attends pas que les cailles tombent toutes roties J'ai commencé à écrire ça :
Mon projet ne gère que le GET et renvoie le(s) fichier(s) demandés.
Il renvoie la page "index.html" si rien n'a été précisé.
Il écoute sur le port 8080.
Marche pas trop mal si la page est "courte" et contient du texte seulement
Par contre si la page contient des liens vers des images ça fonctionne une fois sur 10
Index.html contient 2 images. Un GIF (smiley.gif) et un BMP (truc.bmp) pour voir...
Parfois les deux images arrivent, parfois 1 seule sinon aucune...
Quelquefois la même apparaît 2 fois et quelquefois elles sont inversées
(raaaahhhhh !)
En clair on est à des millions d'années lumières d'Apache et même un béotien comme moi ne saurait s'en contenter.
Voici la page index.html, ultra minimaliste
<html>
<head>
</head>
Bienvenu
vous êtes connecté au serveur...
<hr>
</html>
voici le code Borland C++ Builder à mettre dans un form
Rem : le type du ServerSocket est "stNonBlocking". J'ai essayé l'autre valeur mais ça bloquait tout alors...
2 champs memos, une listbox pour les traces et faites rouler...
(désolé : je n'ai pas trouvé les balises utilisées sur le forum pour isoler le code du reste du message)
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
//Evénement qui survient à la déconnexion du client.
ListBox1->Items->Add(AnsiString("ServerSocket1ClientDisconnect"));
ListBox1->Items->Add(AnsiString("-----------------------------"));
id = open(NomFichier.c_str(), O_RDONLY|O_BINARY);
if (id != -1)
{
lg = filelength (id);
bloc = (char*)malloc (lg);
if (bloc != NULL)
{
lg = read (id, bloc, lg);