W5500 личинка "web сервера"

Собственно поменял порт на 80 в вызове loopback_tcps (проект к кокосу в приложении) и добавил пару проверок на GET и адрес, если зайти на "/test" то выдаст тупую страничку:

если что то иное то 404:

const char http_200_header[] =
"HTTP/1.0 200 OK\r\n"
"Content-Type: text/html; charset=windows-1251\r\n"
"Server: STM32\r\n"
"\r\n";
const char http_404_header[] =
"HTTP/1.0 404 Not Found\r\n"
"Content-Type: text/html;"
"Server: STM32\r\n"
"\r\n"
"<pre>Page not found\r\n\r\n";
int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port)
{
int32_t ret;
uint16_t size = 0, sentsize=0;
uint8_t *url;
switch(getSn_SR(sn))
{
case SOCK_ESTABLISHED :
if(getSn_IR(sn) & Sn_IR_CON)
{
printf("%d:Connected\r\n",sn);
setSn_IR(sn,Sn_IR_CON);
}
if((size = getSn_RX_RSR(sn)) > 0)
{
if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE;
ret = recv(sn,buf,size);
if(ret <= 0)
return ret;
sentsize = 0;
//отсюда
//проверяем что имеем GET запрос
if(memcmp(buf, "GET ", 4)==0)
{
//выдираем URL - extract URL from request header
url = buf + 4;
//насыпем данных - http data fill
if(memcmp(url, "/test", 5)==0)
{
strcpy(buf,http_200_header);//хедеры от Лайфловер :)
strcat(buf,"SIMPLE HTTP TEST PAGE FOR W5500!");
}
else
{
strcpy(buf,http_404_header);
}
size=strlen(buf);
//вот посюда
//sending answer
while(size != sentsize)
{
ret = send(sn,buf+sentsize,size-sentsize);
if(ret < 0)
{
close(sn);
return ret;
}
sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.
}
}
//вот и отваливаемся тоже добавилось
//ending
disconnect(sn);
}
break;
case SOCK_CLOSE_WAIT :
printf("%d:CloseWait\r\n",sn);
if((ret=disconnect(sn)) != SOCK_OK) return ret;
printf("%d:Closed\r\n",sn);
break;
case SOCK_INIT :
printf("%d:Listen, port [%d]\r\n",sn, port);
if( (ret = listen(sn)) != SOCK_OK) return ret;
break;
case SOCK_CLOSED:
printf("%d:LBTStart\r\n",sn);
if((ret=socket(sn,Sn_MR_TCP,port,0x00)) != sn)
return ret;
printf("%d:Opened\r\n",sn);
break;
default:
break;
}
return 1;
}
Disclaimer: вы должны понимать что это конечно только личинка :)
p.s. не личинка we.easyelectronics.ru/GYUR22/w5500stm32sd-web-server.html
- +1
- 02 сентября 2014, 17:32
- GYUR22
- 1
Файлы в топике:
WIZNET_simple_web_test.zip
Комментарии (12)
RSS свернуть / развернуть