web服务器之boa搭建开发实例

使用web页面远程控制led
1、CGI编程
      CGI(Common Gateway Interface)是外部应用扩展,应用程序与www服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互操作。而CGI规范就定义了web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。通过CGI可以提供许多静态的HTM L网页无法实现的功能。比如搜索引擎、基于web的数据库访问等等。

1、建立index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>led远程控制</title>
<style type="text/css">
body {
	background-color: #999900;
	text-align: center;
}
.ziti {
	font-size: 24px;
}
.juzhong {
	text-align: center;
}
.hsz {
	text-align: center;
}
.hsz td {
	color: #00F;
	font-size: 18px;
}
.hsz {
	background-color: #FCC;
}
.juzhong table {
	text-align: center;
}
.juzhong table tr {
}
#h1 {
	background-color: #0FC;
}
#h2 {
	background-color: #FF9;
}
.h3 {
	background-color: #0CF;
}
.ys1 {
	font-size: 24px;
}
.STYLE1 {font-size: 36px}
</style>
</head>

<body class="juzhong">
<table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><p class="STYLE1"> </p>
    <p class="STYLE1">iTOP-4412 WEB SERVER </p></td>
  </tr>
 
  <tr>
    <td height="30"> </td>
  </tr>
  <tr>
    <td><form action="/cgi-bin/myled.cgi" method="get" enctype="application/x-www-form-urlencoded" name="form1" target="_blank" id="form1">
      <table width="300" border="1" align="center" cellpadding="1" cellspacing="1">
        <tr>
          <td>Led1</td>
          <td><input name="led1" type="checkbox" id="led1" value="1" />
            <label for="led1"></label></td>
        </tr>
        <tr>
          <td>Led2</td>
          <td><input name="led2" type="checkbox" id="led2" value="2" />
            <label for="led2"></label></td>
        </tr>
       
        <tr>
          <td colspan="2"><input type="submit" name="submit" id="submit" value="submit" /></td>
          </tr>
      </table>
    </form></td>
  </tr>
  <tr>
    <td ><p> </p>    </td>
  </tr>
</table>
<p> </p>
</body>
</html>

        上面输入的是HTML格式的代码,主要是用到了通过表单向服务器提交信息,在表单里面指定了服务器端处理接收到信息的CGI程序是myled,这是在form表单的属性里设置的,代码是“form action="/cgi-bin/myled.cgi" method="get”,使用的传递数据的方式是get方法。

2、myled.c
    –进入www/cgi-bin目录
    –将myled.c拷贝进去
    –编译#arm-none-linux-gnueabi-gcc -o myled.cgi myled.c -static
    –修改权限#chmod 777 myled.cgi

myled.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
	char *data;

	int leds[2] = {0, 0};

	long m, n;

	int exit=0,i,fd;

	printf("Content-Type:text/html;charset=gb2312\n\n");

	printf("<html>\n"); 
	printf("<body>\n");
	printf("<title>iTOP-4412</title> ");
	printf("<h3>iTOP-4412</h3> ");

	data = getenv("QUERY_STRING");
	printf("<p>receive data:%s</p>",data);
	
	while(*data != '\0')
	{
		if(*data=='=')
		switch(*(data+1))
		{
			case '1':leds[0]=1;break;
			case '2':leds[1]=1;break;
			default:exit=1;break;
		}
		if(exit == 1)
			break;
		data++;
	}

	fd=open("/dev/leds",0);

	for(i=0;i<2;i++)
	{
		if(leds[i]==1)
			printf("<p>%d\t</p>",i+1);
		ioctl(fd,leds[i],i);
	}

	printf("</body>\n");
	printf("</html>\n");

	return 0;
}

3、char *getenv(char *envvar)
      –getenv("QUERY_STRING")
      –该函数用来取得参数envvar环境变量的内容
      –QUERY_STRING获取网页传过来的数据

4、启动开发板,运行局域网中的浏览器
     –浏览器中输入192.168.1.231(根据实际设置为准)
     –简单的操作界面控制led灯的亮灭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值