webForumDet fria alternativet

Webserver

13 svar · 533 visningar · startad av psykolog

psykologMedlem sedan apr. 2000198 inlägg
#1

Någon som har erfarenhet av att skriva en webserver?

Och kan rekommendera litteratur

Letar efter fritifdsprojekt ;)

UlfTMedlem sedan maj 20016 050 inlägg
#2

Har ingen erfarenhet av det, men väl en litteraturhänvisning:

http://www.w3.org/Protocols/rfc2616/rfc2616.html

dvs http-protokollet som din webserver måste förstå.

BeatboxMedlem sedan okt. 20012 496 inlägg
#3

Vilket operativ har du tänkt skriva för och i vilken utvecklingsmiljö ? Lösningarna ser minst sagt olika ut. Ska du stödja alla protocoll eller bara http ? https så blir det ju krypering inblandat.

psykologMedlem sedan apr. 2000198 inlägg
#4

Olika javisst

Naturligtvis blir det ju olika beroende på vilken plattform jag använder, men det måste ju finnas en bakomliggande teknik som är ganska så gemensam för alla webbservers.

Tack för länken!

BeatboxMedlem sedan okt. 20012 496 inlägg
#5

Hur man betjänar klienter är det väl enda som är lika i alla typer av platformar och utvecklingsmiljöer. Rester skiljer sig helt beroende på vilken utvecklingsmiljö du använder.

spangoMedlem sedan juni 20006 147 inlägg
#6

http://www.w3.org/Protocols/rfc2616/rfc2616.html
Övriga saker värda att fundera på är tråd- och objektpooler. Själva sockethanteringen är enkel.

BeatboxMedlem sedan okt. 20012 496 inlägg
#7

Det är ju rätt mycket jobb om man ska stödja HTTP 1.1 fullt ut.... :-)

UlfTMedlem sedan maj 20016 050 inlägg
#8

-> psykolog

Väldigt generaliserat ska du göra ett program som ligger och lyssnar på en TCP/IP-port. När någon klient kontaktar programmet, ska det göra vad klienten ber programmet om. Det kommer vara saker som att skicka över en html-fil, skicka över en bild, etc. När klienten ber om dessa saker, gör den det med hjälp av protokollet http. Det är alltså http-frågor som din server måste förstå. Http-protokollet har vi redan länkat till, till och med två gånger. Själva grundprincipen bör vara lika för alla plattformar. Vad du mer bör kolla upp, är hur en server för TCP/IP fungerar, hur den ligger i en loop och lyssnar på en utvald port. Men som sagt, mina erfarenheter på området är begränsade, så några detaljer om https eller liknande kan jag inte.

ToonsterMedlem sedan feb. 20001 546 inlägg
#9

Det är inga problem alls, man klarar det genom vanliga standardfunktioner. Kör du med C/C++ så är det bara att starta!

Det hela handlar om att lyssna på en port, skriva ett HTTP huvud, hämta en fil på hårddisken och skicka iväg...

För bästa funktionalitet (och för bättre prestanda plus mera huvudbry) så bör du skapa en trådad modell.

Det finns två enkla webbservrar med källkod på nätet, har tyvärr inte adressen, men de heter httpa och httpmt (har för mig de fanns på en sida om sockets programmering) gör en sökning.

/T

jtMedlem sedan juni 2000326 inlägg
#10

TinyWEB är en weserver där källkoden(delphi) medföljer.
http://www.ritlabs.com/tinyweb/

spangoMedlem sedan juni 20006 147 inlägg
#11

Apache är en webbserver där källkoden (C) följer med ( :D ) och Jigsaw är ytterligare en (Java).

BeatBox> Vad är du för en vekling? ;)

BeatboxMedlem sedan okt. 20012 496 inlägg
#12

Vad är du för en vekling?

Efter 10 års programmering så börjar man vara tämnligen less på text-parsnings problematik. Man har gjort det förut om man så säger. :-)

psykologMedlem sedan apr. 2000198 inlägg
#13

tack alla

Jag hade glömt av den här tråden, för jag fick plötsligt alldeles mycket mindre tid ;), men jag skall kolla upp det här närmare när jag får tid.

Tack för hjälpen!

sgtpepperMedlem sedan apr. 20005 524 inlägg
#14

Det finns som sagt en mängd små och stora webbservrar med medföljande kod att kolla på.

Själv byggde jag en enkel trådad webbserver i Java som stödde HTTP 1.0 hyffsat som en lab när jag pluggade som jag nog skulle kunna rota fram källkoden till om du är intresserad, notera dock att den antagligen är rätt fult skriven med tanke på att det var ett tag sedan jag gjorde den :)

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb