Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 编写自定义http服务器时,支持AJAX是否需要http GET上的额外代码?_C_Ajax_Http - Fatal编程技术网

C 编写自定义http服务器时,支持AJAX是否需要http GET上的额外代码?

C 编写自定义http服务器时,支持AJAX是否需要http GET上的额外代码?,c,ajax,http,C,Ajax,Http,我必须编写一个非常轻量级的服务器,可以在C语言的嵌入式系统处理器上运行 我计划只支持GET请求。大部分内容都是静态的,但它们是由C CGI文件生成的(是的,我知道,这很痛苦,但我们只有C可以使用) 我是否能够支持AJAX GET请求?我不知道是否需要特殊的服务器端代码来处理它们。我觉得AJAX完全是客户端的。AJAX很好,它只是在服务器端格式完全相同的GET(或偶尔POST)请求 服务器上的不同之处在于,它们通常会转到不同的“servlet”(或C代码中的方法)进行应答 通常,答案可能是XML、

我必须编写一个非常轻量级的服务器,可以在C语言的嵌入式系统处理器上运行

我计划只支持GET请求。大部分内容都是静态的,但它们是由C CGI文件生成的(是的,我知道,这很痛苦,但我们只有C可以使用)


我是否能够支持AJAX GET请求?我不知道是否需要特殊的服务器端代码来处理它们。我觉得AJAX完全是客户端的。

AJAX很好,它只是在服务器端格式完全相同的GET(或偶尔POST)请求

服务器上的不同之处在于,它们通常会转到不同的“servlet”(或C代码中的方法)进行应答

通常,答案可能是XML、JSON(Javascript的序列化数据)或HTML片段(不带或标记,仅是a或其他内容)。或者它可能只是一个200 OO的响应,表示“成功”

在浏览器端,AJAX是从页面内的Javascript请求和使用的;然后通过
innerHtml
(对于HTML片段)将结果粘贴到DOM中,或者通过Javascript(对于JSON)将结果内置到DOM中。第二种选择性能较差

您的第一个典型用例可能是搜索框的自动完成,或者类似的东西


HTTP服务器的最大问题是,它们应该是可靠的。C语言并不是一种提供全天候可靠软件的好语言


Java对我来说是一个巨大的飞跃,因为您可以安全地执行字符串并记录您该死的程序正在执行的操作——我认为这是质量工程和可调试性的最低要求。祝你好运

您应该问自己的问题是,为什么需要编写自定义HTTP服务器。研究现有的解决方案,看看它们是否满足您的需求。假设您有某种POSIX层可供编程,您可以将几个轻量级HTTP服务器移植到嵌入式系统:


  • GNU libmicrohttpd是一个小型的C库,它可以使HTTP服务器作为另一个应用程序的一部分运行起来更加容易。GNU GNU Libmicrohttpd是自由软件,是GNU项目的一部分


  • 安全性、速度、法规遵从性和灵活性——所有这些都描述了lighttpd,它正在快速重新定义Web服务器的效率;因为它是为高性能环境而设计和优化的。。。它是根据修订后的BSD许可证获得许可的开源软件


  • nginx[engine x]是一个HTTP和反向代理服务器,也是一个邮件代理服务器,由Igor Sysoev编写。。。以下是一些成功案例:Netflix、Wordpress.com、FastMail.FM。。。源代码和文档根据类似BSD的2条款许可证分发


  • thttpd是一个简单、小型、快速、安全的HTTP服务器。它没有很多特殊功能,但它足以满足大多数web使用,它的速度与最好的全功能服务器(Apache、NCSA Netscape)相当,并且它有一个非常有用的功能(基于URL流量的节流),这是目前其他服务器所没有的


如果可能的话,我们之所以不让您实现自己的功能,是因为AJAX在很大程度上依赖HTTP/1.1特性来提供高质量的用户体验,从头开始实现所有HTTP/1.1是一项相当艰巨的任务,在服务器稳定且性能足以成为令人满意的产品之前,可能需要多次开发迭代。

AJAX的有趣部分完全发生在客户端。对于那些不知道的人来说,AJAX代表“异步Javascript和XML”,这意味着从客户端的角度来看,请求将通过Javascript异步发出。XML部分具有误导性,因为这些是正常的HTTP请求,响应可以包含任何内容

就您的服务器而言,您将像处理任何其他请求一样处理这些请求。没有特殊的代码,没有特殊的servlet,等等。从服务器的角度来看,没有任何东西会使请求成为“AJAX”,所以请像对待其他请求一样对待它


此外,我希望项目进展顺利,祝你好运。太多人回避这些有趣的挑战,因为它们很难,或者看起来很容易解决。

尝试交叉编译node.js是否太多?我相信,Arduino平台已经存在这样的服务器。你可能想看看Luvit,一个基于Lua的nodejs克隆,他们声称运行在raspberry pi上。你能提供更多关于硬件平台的信息吗?你的内存有多有限?C不是一种可靠的语言?任何东西都是基于C的,linux内核运行数月都没有问题。。。C语言的问题是什么?我过去在C和C++中编写了高可靠性的软件。包括内核级的东西。主要问题是难以安全地构建字符串或执行诊断日志记录,而不会导致缓冲区溢出或二次故障。没有日志记录的代码不是工程。@user2485710我想你从来没有听说过C-Code Windows设备驱动程序尽管经过多年的“调试”,仍然会显示隐藏的bug和竞争条件+1关于你对C的可靠性的看法@ThomasW种族状况实际上不是语言的问题。总的来说,我认为是程序员(称之为幼稚)而不是语言本身损害了可靠性。但你是对的。C不能帮助您避免错误。构建字符串和日志记录很困难吗?它与任何其他内存管理任务有何不同?我将添加到该列表中。这是我所知道的最小/最轻的,仍然提供了合理水平的HTTP 1.1合规性和体面的功能集