Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LE PLUS PETIT SERVEUR WEB AU MONDE


Information sur la source

Catégorie :Réseau & Internet Classé sous : web, serveur, server, http Niveau : Débutant Date de création : 23/03/2002 Date de mise à jour : 23/03/2002 18:57:01 Vu / téléchargé: 5 054 / 424

Note :
10 / 10 - par 7 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

Description

Je pense que je poste ici le plus petit serveur web jamais écris : prennez un nouveau projet VB rajoutez Microsoft Winsock control dans les composant, inserez ce composant sur la form et collez ce code source. voila vous avez un serveur web (rajoutez encore une page index.html dans le répertoire courrant) et voila ! c'est sans prétention, mais amusant ! je join aussi un zip pour les pas doué du copie/coller :-) si vous trouvez une astuce pour réduire encore le code je suis prenneur !

notez qu'il gere les erreures 404...  
 

Source

  • Private Sub Form_Load()
  • Winsock1.LocalPort = 80
  • Winsock1.Listen
  • End Sub
  • Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  • Winsock1.Close
  • Winsock1.Accept requestID
  • End Sub
  • Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  • Dim StrData As String, FNbr As Integer, Chr As String * 1, Str As String
  • Winsock1.GetData StrData
  • If Left(Mid(StrData, 6, InStr(6, StrData, " ") - 5), 25) = " " Then StrData = App.Path & "\index.html" Else StrData = Left(Mid(StrData, 6, InStr(6, StrData, " ") - 5), 25)
  • If Dir(StrData) = "" Then
  • Winsock1.SendData "<HTML><H1>404</h1></HTML>"
  • Else
  • FNbr = FreeFile
  • Open StrData For Binary As FNbr
  • Do While Not EOF(FNbr)
  • Get #FNbr, , Chr
  • Str = Str & Chr
  • Loop
  • Close FNbr
  • Str = "HTTP/1.1 200 OK" & vbCrLf & vbCrLf & Str
  • Winsock1.SendData Str
  • End If
  • End Sub
  • Private Sub Winsock1_SendComplete()
  • Winsock1.Close
  • Winsock1.Listen
  • End Sub
Private Sub Form_Load()
    Winsock1.LocalPort = 80
    Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Close
    Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim StrData As String, FNbr As Integer, Chr As String * 1, Str As String
    Winsock1.GetData StrData
    If Left(Mid(StrData, 6, InStr(6, StrData, " ") - 5), 25) = " " Then StrData = App.Path & "\index.html" Else StrData = Left(Mid(StrData, 6, InStr(6, StrData, " ") - 5), 25)
    If Dir(StrData) = "" Then
        Winsock1.SendData "<HTML><H1>404</h1></HTML>"
    Else
        FNbr = FreeFile
        Open StrData For Binary As FNbr
        Do While Not EOF(FNbr)
            Get #FNbr, , Chr
            Str = Str & Chr
        Loop
        Close FNbr
        Str = "HTTP/1.1 200 OK" & vbCrLf & vbCrLf & Str
        Winsock1.SendData Str
    End If
End Sub
Private Sub Winsock1_SendComplete()
    Winsock1.Close
    Winsock1.Listen
End Sub

Conclusion

Si vous voullez plus de sources, de démo et de logiciel (dont un serveur web plus complet) allez sur http://www.rature.com    
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de max12 le 23/03/2002 17:26:35 administrateur CS

LOL il porte bien son nom, mais pas mal quand même simple, rapide et facile mais faudrais multiple socket

@++

signaler à un administrateur
Commentaire de orisa le 23/03/2002 17:36:41

merci :-) mais tu fais bien de le préciser : je n'ai pas essayé mais s'il y a

signaler à un administrateur
Commentaire de orisa le 23/03/2002 17:39:31

merci :-) et tu fais bien de le préciser : je n'ai pas essayé mais s'il y a trop  d'image sur la page a envoyer, le navigateur va tenter d'ouvrir de multiples connexions avec le serveur mais comme le winsock est occupé a l'envoi il ne répondra pas a partir de la seconde requette et ça risque de ne pas marcher... a tester donc (ça dépend aussi du délai d'attente avant d'estimer que la connexion est un echec)
A+
PS : désolé pour le faux commentaire pas fini de tout a l'heure :-)

signaler à un administrateur
Commentaire de The man whit the long hair le 23/03/2002 18:57:35

Eum j'ai l'air con mais ... comment on se connecte a sa a partir de IE ?

signaler à un administrateur
Commentaire de orisa le 23/03/2002 19:00:11

depuis un autre poste l'IP de la machine, pour tester sur la même machine que celle ou le server tourne il suffit de mettre :
http://127.0.0.1
ou
http://localhost
dans la bare d'adresse.

signaler à un administrateur
Commentaire de Benj1105 le 23/03/2002 21:11:52

Ce serait possible de commenter un peu plus le texte ? Est-ce qu on peut envisager de remplacer apache par ca ? Il faudrait ajouter un support du PHP aussi... Vila vila ! :)

signaler à un administrateur
Commentaire de Jackboy le 24/03/2002 20:26:42

salut, petite question, l'adresse http://127.0.0.1, comment c'ette adresse est t'elle attribuer ? Si deux serveur se connecte auront t'il la même adresse et comment changer ceci !!!!! Pour les fonctions d'un serveur le ftp, le php, mysql, etc, comment additionner c'est fonction à notre serveur.

signaler à un administrateur
Commentaire de Jackboy le 24/03/2002 20:28:32

salut, petite question, l'adresse http://127.0.0.1, comment c'ette adresse est t'elle attribuer ? Si deux serveur se connecte auront t'il la même adresse et comment changer ceci !!!!! Pour les fonctions d'un serveur le ftp, le php, mysql, etc, comment additionner c'est fonction à notre serveur.

signaler à un administrateur
Commentaire de orisa le 24/03/2002 21:04:53

l'adresse 127.0.0.1 ou localhost est l'adresse loop-back, toutes les machines possèdent cette adresse IP. mais on ne peut acceder a cette adresse que depuis la machine en question : si 2 postes sont sur un réseau chacun a l'adresse 127.0.0.1 mais chacune aura une (ou plusieurs) autre IP. pour la connaitre -&gt; ipconfig

signaler à un administrateur
Commentaire de logisim le 24/03/2002 21:52:32

Pour le PHP, je pense qu'on peut utiliser php.exe en plaçant les variables après le ? au début entre &lt;?php et ?&gt; et en faisant "php.exe page.php&gt;page.tmp" et envoyer le résultat page.tmp

signaler à un administrateur
Commentaire de croweyeZ le 24/03/2002 22:58:04

petit, mon cul??

du vrai petit
http://www.acme.com/software/mini_httpd/
http://aurora.esi.uem.es/~alo/?action=cherokee
http://www.acme.com/software/thttpd/
http://mathop.diva.nl/

et une comparaison
http://www.acme.com/software/thttpd/benchmarks.html

jamais un ocx windows ne sera petit
qu'on se le dise

signaler à un administrateur
Commentaire de orisa le 25/03/2002 07:36:48

c'est vrai que pour la taille de l'installation ça fait gros, pas seulement a cause de l'ocx mais aussi de tous les DLL de VB. n'empèche niveau code source aucun de ces exemples ne prend si peux de lignes de code, le plus petit prend 3,658 lignes !

signaler à un administrateur
Commentaire de leptidev le 25/03/2002 13:18:38

Moi je cherche un petit prog qui me permet juste d'utiliser du Php et des Bdd (SQL) sur ma machine, est ce que ton truc le permet ou sinon que faut-il faire de plus ??? est -il obligé de loader php.exe ????

signaler à un administrateur
Commentaire de Benj1105 le 25/03/2002 19:25:47

Bon, je suis en train d' essayer de le perfectionner pour qu' on puisse definir une page 404, 403 et pour le PHP, quand au MySQL il s' agit en fait d' un serveur à part ! Donc tu pourrais tres bien avoir un serveur MySQL sans serveur Web, ce que je veux dire c est que tu peux tres bien utiliser un serveur MySQL avec ce serveur Web.

signaler à un administrateur
Commentaire de beeline le 31/03/2002 10:15:11

moi aussi je suis interresser si tu fait un truc pour le php
ou meme l'asp ( si ti arrive )

je veut bien meme essayer avec mes modeste connaissance de t'aider

Beeline

signaler à un administrateur
Commentaire de Benj1105 le 28/04/2002 19:37:07

Pfiouuu........... j' avais lâcher le projet un peu car je voyais pas comment utiliser php.exe... mais bon... je me suis décider à écrire à la team de php pour leur demander ! Seul problème: mon anglais n' est pas très bon... alors si quelqu' un pouvait prendre contacte avec moi ce serait sympa ! On pourrait aussi se regrouper pour en faire un très bon serveur (bien qu' il soit déjà très bien). Avec l' accord de l' auteur original bien sûr...

signaler à un administrateur
Commentaire de Leniver le 30/10/2003 07:11:36

Joli boulo ....  moi je trouve simpa comme server ...

signaler à un administrateur
Commentaire de misterzinzin le 07/12/2003 22:21:10

pour une simple page c nickel mais des qu'on joue avec des cadre... et oui pas possible de gerer plusieur connection... enfin soit pour ceux qui veullent du php y as tjs easyphp telechargeable sur www.telecharger.com

signaler à un administrateur
Commentaire de zeboss31 le 24/05/2006 13:45:04

pourquoi utiliser le port 80?? etant donné qu'il est deja utilisé par l'ordi,winsock plante !! (enfin en tout cas chez moi oui, donc je met un port au pif et sa marche nikel :D !)

signaler à un administrateur
Commentaire de Artemis2 le 24/01/2008 21:07:44 10/10

Qulques optimisations possibles mais il est très bien fait et très efficace ;-)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

pb de serveur [ par laure ] bonjour,je travaille avec Microsoft Visual Interdev. J'ecris des pages en asp.Je ne comprends pas : j'ai un message d'erreur de ce style aund j'essaie PB SQL Server + instance nommée [ par keskispas ] KesKisPas Bonjour à tous. J'ai un gros problème sur SQL SERVER 2000 Je viens d'installer une instance nommée mais je n'arrive pas à m'y connecter d VB & Exchange Server [ par Simeoni ] Bonjour &#224; tous,Je souhaite me connect&#233; &#224; un serveur Exchange avec VB et r&#233;ccup&#233;rer des donn&#233;es et des e-mails stock&#233 Serveur en mode console [ par MorpionMx ] Bonjour, j'ai une question qui a surement une solution tout bete, mais je ne la connais pas. En fait j'ai un serveur en mode console, qui est adapt& Serveur en mode console [ par MorpionMx ] Bonjour, j'ai une question qui a surement une solution tout bete, mais je ne la connais pas. En fait j'ai un serveur en mode console, qui est adapt& Serveur en mode console [ par MorpionMx ] Bonjour, j'ai une question qui a surement une solution tout bete, mais je ne la connais pas. En fait j'ai un serveur en mode console, qui est adapt& serveur Http et get/post [ par smasher81 ] Allo, je cherche depuis quelques temps seulement la façon de receillir un get ou un post d'une page sur mon serveur.. tout simple la.. Pourrais-tu m'a Projet visual basic et publication web [ par mtcarmella ] bonjour, est ce possible &#224; partir d'une url d'acceder &#224; mon projet visual basic. comment proc&#233;der? Je ne sais pas si c'est ainsi, mais [ASP.net] Configuration IIS 5.1 [ par gregorian ] Bonjour, voici mon probl&#232;me je n'arrive plus &#224; cr&#233;er des web service. Je developpe sous VB.NET et j'&#233;tait dans une vieille version


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.