2015-02-06 66 views
0

我有一个使用Atmel嵌入式处理器的简单Web服务器。这是一个Cortex M4,它只是将FreeRTOS作为操作系统运行;这不是一个高性能的处理器。嵌入式处理器网络服务器;将信息从browwer传递到服务器

我可以有它[爱特梅尔处理器]在Firefox中输入服务了一个网页:

192.168.0.200

这使得页面的下拉框和一个提交按钮,让我通过数据返回到服务器以控制硬件。

我使用的是以下类型的HTML。请注意,它看起来有点奇怪,因为它是在一个C字符串:

"<form> \ 
<select name=\"group\"> \ 
    <option value=\"10\">10</option> \ 
    <option value=\"11\">11</option> \ 
    <option value=\"12\">12</option> \ 
    <option value=\"Broadcast\">255</option> \ 
</select> \ 
<input type=\"submit\" value=\"Submit\"> \ 
</form>" 

你可以看到,在其地址栏中,浏览器则具有类似:

192.168.0.200/?group=4

当emebedded处理器上的Web服务器获取到该消息时,我可以愉快地解析该行,提取组号并对其采取行动。

不过,我到另一个页面发送回浏览器的时候,我得到了

192.168.0.200/?group=4

消息到爱特梅尔处理器。否则,我会收到一条超时消息。我可以高兴地再次发回原始页面,它本质上工作,但发回页面重置下拉框已经改变的值。

有没有办法使浏览器发送消息,服务器可以解析,但不必发送整个页面?我想我需要使用类似POST命令的东西,但我不知道如何从网页上执行此操作。我应该说我对C有经验,但是除了我在过去几天学到的知识以外,没有任何HTML知识,所以这可能是一件容易的事情,它可以让我从本周的所有学习中完全摆脱困境!

我不想/假设我不能使用Javascript,因为我有这样一个简单的服务器,我需要保持它尽可能简单。

谢谢!

回答

1

有没有办法使浏览器发送消息,服务器可以解析,但不必发送整个页面?

忘掉浏览器。

服务器是否响应204 No Content响应而不是200 OK响应。

如果客户端是用户代理,它不应该改变其导致请求被发送的文档视图。尽管任何新的或更新的元信息都应该应用于当前用户代理活动视图中的文档,但该响应主要是为了允许在不改变用户代理的活动文档视图的情况下进行操作输入。


我不想/以为我无法使用JavaScript,因为我有这样一个简单的服务器,我需要保持尽可能简单。

JavaScript运行客户端。你不需要服务器来做任何复杂的JS服务。你甚至可以将它嵌入到HTML文档中。

可能使用Ajax来解决你的问题,而不是无内容响应。

+0

嗯,没有内容的想法听起来像一个灿烂的。我会尽快给你回报。谢谢! – DiBosco 2015-02-06 10:53:25

+0

这是一种享受,谢谢。 :) – DiBosco 2015-02-06 14:18:42