WEB开发网
开发学院手机开发Android 开发 详解 Android 中的微型云 阅读

详解 Android 中的微型云

 2010-02-22 16:05:00 来源:WEB开发网   
核心提示:"); } } else hyper(TRUE, namelist[i]->d_name); } else { mimeokay(n
");
}
}
else
hyper(TRUE, namelist[i]->d_name);
}
else
{
mimeokay(namelist[i]->d_name);

if(fstr == 0)
{
strcat(theList, namelist[i]->d_name);
strcat(theList, " ");
}
else
hyper(FALSE, namelist[i]->d_name);
}

free(namelist[i]);
}

free(namelist);
}

return theList;
}

在清单 9 中,定义了微型云服务器的 child 功能。这个功能在每次服务器接收到浏览器请求时运行,并且它提供了一个简单功能:分配必需的缓冲以满足请求、处理缓冲,然后释放缓冲,这样,在不需要使用内存的时候,分配的系统内存就会降低。在手机中,内存是一种非常稀缺的资源,因此,当程序处理完一个请求后,应当将所占用的内存返回给系统。

清单 9. Daemon child 功能


void child(int fd, int hit)
{
long i;
long ret;
char* cret;

mainbuf=malloc(SBUF+1);
theList=malloc(SBUF+1);
theDir=malloc(LBUF+1);
cret=getcwd(theDir, LBUF);

ret=read(fd, mainbuf, SBUF);

if(ret == 0 || ret == -1)
{
error404(fd);
}
else
{
if(ret > 0 && ret < SBUF)
mainbuf[ret]=0;
else
mainbuf[0]=0;

for(i=0; i<ret; i++)
if(mainbuf[i] == '' || mainbuf[i] == ' ')
mainbuf[i]='*';

aclog(LOG, "request", mainbuf, hit);

for(i=4; i < SBUF; i++)
{
if(mainbuf[i] == ' ')
{
mainbuf[i]=0;
break;
}
}

if(!strncmp(&mainbuf[0], "GET /", 6) ||
!strncmp(&mainbuf[0], "get /", 6))
{
htmlout(fd, fileList);
}
else
{
if(!strncmp(&mainbuf[5], "About_", 6))
{
htmlout(fd, about);
}
else if(!strncmp(&mainbuf[5], "Home_", 5))
{
htmlout(fd, fileList);
}
else if(!strncmp(&mainbuf[5], "CD_", 3))
{
if(chdir(&mainbuf[8]) == -1)
{
error404(fd);
}
else
{
if(strcmp(theDir, &mainbuf[8]))
strcpy(theDir, &mainbuf[8]);

htmlout(fd, fileList);
}
}
else
{
retfile(fd, hit);
}
}
}

free(theDir);
free(theList);
free(mainbuf);
sleep(1);
exit(1);
}

上一页  3 4 5 6 7 8 9 10 11 12  下一页

Tags:详解 Android 微型

编辑录入:coldstar [复制链接] [打 印]
赞助商链接