C中的服务器如何使用查询字符串?

时间:2011-07-19 12:25:49

标签: c sockets query-string

所以,我假设我需要使用套接字(我是C的新手)。

该程序适用于Windows(纯C语言)。我将使用这些例子

http://cs.baylor.edu/~donahoo/practical/CSockets/winsock.html

我的问题是,我希望服务器通过网络浏览器接受连接,而不是通过TCP连接的客户端程序。

因此,如果服务器程序正在运行,则键入http://yourip:port/?gettemps并且服务器响应,但我该怎么做?

正如您可能已经猜到的,该程序将通过Web浏览器远程监控临时值。但不是CPU,使用AMD的ADL库的GPU(所以是的,只有AMD卡)。

4 个答案:

答案 0 :(得分:4)

大多数Web服务器支持的最简单的选项是CGI - Common Gateway Interface

cource的微软有自己的运行网络应用程序的方式 - ISAPI

答案 1 :(得分:2)

HTTP是一个非常大的标准,您可能希望使用某些库(如libcurl)来为您处理详细信息。

如果您决定自己编写代码,HTTP将通过TCP运行,因此您首先需要在标准HTTP端口80上打开TCP套接字。然后只需监听套接字并解析传入的HTTP数据 - 给出了一个很好的总结在这里:http://www.jmarshall.com/easy/http/

答案 2 :(得分:2)

Web浏览器通过tcp向服务器发送http get请求。如果您从头开始编写Web服务器,则需要从Web浏览器解析数据。 http get请求是类似于GET /images/logo.png HTTP/1.1的字符串。因此,通过tcp对该字符串进行标记化并获取命令。

当您收到服务器的命令时,请调用适当的函数来处理您的请求。 这是简单http server的一个很好的例子。您可能希望使服务器具有多线程,因为您可能有多个并发用户。

答案 3 :(得分:0)

如果您已经设置了Web服务器以在相应的端口上运行应用程序,则可以使用getenv(“QUERY_STRING”)访问Web等效的命令行参数。

最好直接调用您的程序,而不是像您的示例那样只使用服务器访问单个默认程序,因此您可以使用http://yourip:port/yourprogram?cmd=gettemps。在此示例中,getenv(“QUERY_STRING”)将返回'cmd = gettemps'。