C http服务器是否向我的服务器发送get请求?

C http服务器是否向我的服务器发送get请求?,c,webserver,get-request,C,Webserver,Get Request,这是我正在学习的服务器: 我完全不理解get请求服务器之类的东西。如何发送get请求?我认为我不知道该怎么做的原因是,所有教程都指向从网站获取请求,而这是从我当前的目录中获取的,或者至少是从我的理解中获取的 这是一个学校作业,我们可以复制此作业的代码,但我们必须找到作者。关键是要了解web服务器是如何工作的,我不了解Get请求的作用以及如何在这个特定的服务器中实现Get请求,以便研究其效果 谢谢,下面是我想点击的具体代码。我想测试不同的get请求,看看我能得到什么样的响应或错误 if ( (fd

这是我正在学习的服务器:

我完全不理解get请求服务器之类的东西。如何发送get请求?我认为我不知道该怎么做的原因是,所有教程都指向从网站获取请求,而这是从我当前的目录中获取的,或者至少是从我的理解中获取的

这是一个学校作业,我们可以复制此作业的代码,但我们必须找到作者。关键是要了解web服务器是如何工作的,我不了解Get请求的作用以及如何在这个特定的服务器中实现Get请求,以便研究其效果

谢谢,下面是我想点击的具体代码。我想测试不同的get请求,看看我能得到什么样的响应或错误

if ( (fd=open(path, O_RDONLY))!=-1 )
{
    send(clients[n], "HTTP/1.0 200 OK\n\n", 17, 0);
    while ( (bytes_read=read(fd, data_to_send, BYTES))>0 )
        write (clients[n], data_to_send, bytes_read);
}
else    write(clients[n], "HTTP/1.0 404 Not Found\n", 23); //FILE NOT FOUND
请查看以了解get请求是什么。当您使用浏览器访问网站(所有网站都在某种HTTP服务器上运行)时,浏览器充当客户端,网站充当服务器。客户端发起请求,服务器响应该请求

请求的主要类型(由浏览器响应用户试图查看的URL而发起)是GET请求

例如,如果用户希望访问URL,浏览器将连接到服务器www.example.com的TCP端口80(默认情况下)。建立连接后,浏览器会使用标准GET请求启动“对话”,该请求可能如下所示:

GET /index.htm HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 66
Last-Modified: Wed, 14 Sep 2016 13:05:21 GMT

<html>
<body>
    Welcome to my example page
</body>
</html>
第一行(请求行)之后的任何标题都是可选的,尽管任何浏览器都希望包含“主机”标题,因为大多数网站没有它就无法工作(这允许多个网站共享一个IP地址)。在这种情况下,如果不在此处指定主机名,服务器将无法知道您要访问的网站

在该服务器上获取index.htm的最小GET请求是:

GET /index.htm HTTP/1.1
请注意,请求的结束由一个双CRLF序列(ASCII代码13和10)终止,一个用于最近的头行,另一个用于标记请求头的结束。一旦服务器接收到双CRLF序列,服务器就会相应地响应状态行和代码(找到文档了吗?)。如果找到该文档,它将在响应中返回,通常HTTP状态代码为200,响应头(与请求头的格式相同),双CRLF序列,然后是请求文件的正文。HTTP标准将其称为“实体”。在这种情况下,返回的实体将是index.htm的内容。使用上面的示例,服务器可能会做出如下响应:

GET /index.htm HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 66
Last-Modified: Wed, 14 Sep 2016 13:05:21 GMT

<html>
<body>
    Welcome to my example page
</body>
</html>

i选项使curl显示整个Web服务器响应(包括HTTP响应头),而不仅仅是实体,在本例中,实体是test.htm的内容。您只需调整上面的URL,使其与正在运行的Web服务器的URL相匹配,无论它是在同一台机器上还是在网络上的其他地方。

为什么要从服务器发送请求?客户端发送请求,而您用响应进行回复。至于创建请求,只需让您的本地浏览器执行即可?或者使用命令行工具,比如
curl
?就像我说的,我不知道我在做什么,我不知道服务器的第一件事。客户端发送请求,我回复。我确信这台服务器已经有回复了。curl命令是什么样子的?显示一个。但我也不知道这是否有一个url,它是否会是这样