Method HEAD
El meu objetiu es que el server web sigi el més estandar posible. Una de les pases per aconseguir, és que pugi acceptar més methods que simplement GET's.
Per a ser "validat" com a HTTP 1.1 basta acceptar GETs i HEADs, i l'unic que diferència el HEAD del GET es que amb el HTTP Response no s'inclouen les dades que es demanen al HTTP Request. Com ja sabeu, un response es forma a partir dels headers i les dades; ido en el cas d'una petició HEAD domés es retornen els headers, les dades NO.
Aixó es molt facil d'implementar. Per a saber si ens trobam davant un method GET o HEAD, empram aquest codi (una vegada que ja hem lletgit el HTTP Request del socket).
if(request[0] == 'G' && request[1] == 'E' && request[2] == 'T') {
method = GET;
longi = 5;
}
else {
method = HEAD;
longi = 6;
}
Si algú té una suggerencia per a fer la comprovació anterior més "elegant", sóc tot orelles ;). Com podeu imaginar, abans hem definit el GET i el HEAD ..
#define GET 0
#define HEAD 1
Ara que ja sabem si tenim un GET o un HEAD, el que em de fer es afegir les dades en cas de que sigi un GET.
if(method == GET) {
strcat(response,data);
}
Com veis, és una "pixarada de ca", com es diu per aqui. Encara no he penjat la nova versió perque aquests dies estic sense ordenador, perque la font d'alimentació es va cansar de treballar sense descans i va dir prou, i com que no he pogut probar-ho com toca no vull penjar un codi que façi coses extranyes (encara que no seria la primera vegada .. :D).
El pròxim objectiu: que presenti imatges, i no tan sols texte plà i pagines html.
Fins una altra!
Per a ser "validat" com a HTTP 1.1 basta acceptar GETs i HEADs, i l'unic que diferència el HEAD del GET es que amb el HTTP Response no s'inclouen les dades que es demanen al HTTP Request. Com ja sabeu, un response es forma a partir dels headers i les dades; ido en el cas d'una petició HEAD domés es retornen els headers, les dades NO.
Aixó es molt facil d'implementar. Per a saber si ens trobam davant un method GET o HEAD, empram aquest codi (una vegada que ja hem lletgit el HTTP Request del socket).
if(request[0] == 'G' && request[1] == 'E' && request[2] == 'T') {
method = GET;
longi = 5;
}
else {
method = HEAD;
longi = 6;
}
Si algú té una suggerencia per a fer la comprovació anterior més "elegant", sóc tot orelles ;). Com podeu imaginar, abans hem definit el GET i el HEAD ..
#define GET 0
#define HEAD 1
Ara que ja sabem si tenim un GET o un HEAD, el que em de fer es afegir les dades en cas de que sigi un GET.
if(method == GET) {
strcat(response,data);
}
Com veis, és una "pixarada de ca", com es diu per aqui. Encara no he penjat la nova versió perque aquests dies estic sense ordenador, perque la font d'alimentació es va cansar de treballar sense descans i va dir prou, i com que no he pogut probar-ho com toca no vull penjar un codi que façi coses extranyes (encara que no seria la primera vegada .. :D).
El pròxim objectiu: que presenti imatges, i no tan sols texte plà i pagines html.
Fins una altra!
5 comentarios
Guti -
Respecto a memcmp, te permite comparar dos bloques de memoria, tambíen valdría strcmp, pero memcmp suele ser más eficiente, sobretodo si conoces la longitud de la cadena con la que comparar.
seterom -
servomac -
La función memcmp no la conozco, pero en un momento me lo miro.
¡Gracias compañero!
Guti -
Más eficiente utilizando memcmp en vez de la comparación caracter a caracter.
servomac -
ACLARACIÓ: Els " " que es veuen al codi es suposa que són espais en blanc (SP).