谢谢楼上的帮助,我主要是想用WEB页来控制一个开发板上的LED灯,并且将开发板上的LED灯的状态定时刷新出来显示在WEB页面上,开发板上面移植了一个操作系统和一个轻量级的TCP/IP协议栈,因为协议栈不包括HTTP协议,所以这个要自己写。我写的应用层的大致流程就是,先建立TCP连接,然后在接到POST包就检测里面的标签和值,检测到UsrOrder:LedContrl 1的话就点亮/熄灭LED,检测到我设置的另一个控制字的话就返回LED的状态,由WEB解析这个状态并显示到WEB页上的特定位置。如果想让WEB页面上不停的刷新LED状态的话,就要WEB页不停的发送POST包去询问,但是现在的问题是每发一个POST包都要重新建立TCP连接,本来发两个包就能解决的问题,现在起码要发九个包,开发板上的CPU最高才70M的频率,对这样的重体力活根本就吃不消。我对WEB开发不太了解,找了好久也没找到能够单独发送POST包而不用每次都建立TCP连接这样的对象,这个xmlHttp我已经用全局变量只建立了一个了,但是还是在每次调用send时发送一个SYN请求,不知道是什么原因。能不能请路过的WEB开发的大侠们详细的指导一下小弟,先谢谢大家了。

解决方案 »

  1.   

    用 xmlHttp.send("your data");  试试
      

  2.   


    试了,还是一样会先发送出SYN。我观察了一下GOOGLE,发现它用的是SUBMIT来提交数据的,而且这个提交数据不会再次建立TCP连接,有可能是要用SUBMIT才可以,HTTP POST估计不行。
      

  3.   

    我感觉http协议好象不适合你做那样的工作,这个协议比较吝啬不会让你长久的保持一个连接的,
    所以比较适合信息的发布而不适合做实时的交互。感觉你还是用socket会好一些
      

  4.   


    谢谢你的帮助,我开始也想过用socket,但是那个要用JAVA或C++,这两个语言相对WEB上的脚本语言来说难度比较大,而且要花费比较多的时间去学习;再一个就是如果用socket的话通用性没有WEB强,例如我如果要在其它的机器上操作接在互联网上的开发板的话,那我还要在那台机器上面装上JAVA应用程序,这个就比较麻烦了,但是如果我用WEB来操作的话,我只需要通过互联网先从开发板上下载一个HTML的页面就可以对其进行控制了。基于这样的原因,所以我打算使用WEB来写控制端。我用抓包软件观察过百度和GOOGLE,它们都是先建立一次连接,然后后面数据就都靠这次连接来传输的,我觉得WEB完全有能力做到这一点,只不过现在还没有找到方法。
      

  5.   

    可以用 iframe 创建一个长链接
      

  6.   


    如果要是这么作的话,WEB页这边要如何才能读出来对方发送过来的数据呢?responseText会自动记载对方发送过来的数据吗?如果可以的话,那么应该可以实现我希望的功能。
      

  7.   

    长连接只能解决获取数据的实时性,不能解决发送的的多次连接。用socket你可以尝试下aflax一个开元的
    东西,通过客户端的flash和js类可以实现socket通信,我建议你用这个。这样的话基本融合了web的免安装
    和socket程序的快速响应。本来我的毕业设计打算用哪个但我对socket不懂所以在server端卡住了,只能放弃
    了用的iframe的长链接,有个pushlet框架你可以参考下