Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Python 构建http服务器_Python_Http_Server_Client_Packet - Fatal编程技术网

Python 构建http服务器

Python 构建http服务器,python,http,server,client,packet,Python,Http,Server,Client,Packet,因此,我需要构建一个HTTP服务器,它将联系客户机,向客户机发送图片或计算等数据,并创建一个包含这些内容的页面。我想你明白我不知道我在做什么…:( 我知道python和客户机-服务器项目的基本(+),但我不了解HTTP协议,也不了解我在互联网上读到的任何内容 有人能给我解释一下如何使用这个协议吗?HTTP数据包的形式是什么 这里有一个我不理解的问题的例子:我被要求获取一个数据包(我做到了),了解那里的请求是什么,然后发回客户想要的文件名,然后发回文件本身。我打印了数据包,不知道请求在哪里或客户想

因此,我需要构建一个HTTP服务器,它将联系客户机,向客户机发送图片或计算等数据,并创建一个包含这些内容的页面。我想你明白我不知道我在做什么…:(

我知道python和客户机-服务器项目的基本(+),但我不了解HTTP协议,也不了解我在互联网上读到的任何内容

有人能给我解释一下如何使用这个协议吗?HTTP数据包的形式是什么

这里有一个我不理解的问题的例子:我被要求获取一个数据包(我做到了),了解那里的请求是什么,然后发回客户想要的文件名,然后发回文件本身。我打印了数据包,不知道请求在哪里或客户想要什么

非常感谢

有人能给我解释一下如何使用这个协议吗?HTTP数据包的形式是什么

关于webz,您可以在RFC上找到很多规范。 更多信息请参见下面的HTTP


(由于您似乎是编程新手,我想我可能想告诉您以下内容:)

通常情况下,您不会直接与HTTP(S)数据包进行交互。相反,您使用的是一个框架,例如,以及更多。框架的选择取决于用例。例如:

  • 你需要一个数据库、身份验证和任何可以想象的功能吗?使用Django
  • 您只想创建一个没有臃肿框架的Web应用程序吗?使用Flask
  • 你需要最低限度,还是想充当客户?请选择aiohttp
列出了更多的框架

使用这种框架的优点是,它们通常包含有用的东西,这些东西经过了测试(即通常没有bug),而您不必找出某些协议的特殊性

您只需导入框架并编写awesomeness!:)


(无论如何,这里有一个非常简单的完整性概述)

所以,HTTP是TCP上的文本协议,这基本上意味着通过简单的TCP发送文本。当您收到请求时,您必须“解析”(即理解其内容)。幸运的是,我们的请求是标准化的,并且遵循相同的方案

最小的请求如下所示:

GET / HTTP/1.0
Host: www.server.com
HTTP/1.0 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: 1337
Connection: close
Content-Type: text/html

<DATA>
第一行以a开头,在我们的示例中,动词是
GET
/
表示路径。想想硬盘上的文件路径。第一行的最后一部分,即
HTTP/1.0
,告诉接收者我们使用的是哪个版本的HTTP。目前有HTTP 1.0和HTTP 1.1;但是,如果您自己实现请求,我还不会为HTTP 1.1操心,而是坚持使用HTTP 1.0

最后,
Host:www.server.com
行告诉我们要与哪个服务器对话,因为HTTP服务器的多个实例可能在同一ip下运行。这用于重新启用子域

如果将此请求发送到HTTP服务器,则可能会收到如下响应:

GET / HTTP/1.0
Host: www.server.com
HTTP/1.0 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: 1337
Connection: close
Content-Type: text/html

<DATA>
HTTP/1.0 200正常
服务器:Apache/1.3.29(Unix)PHP/4.3.4
内容长度:1337
连接:关闭
内容类型:text/html
此响应在第一行
HTTP/1.0 200 OK
中包含状态。数字和“OK”表示状态代码,告诉我们一切正常。它们有各自的含义和用法

第一行后面的行是所谓的响应头。它们提供了有关响应的其他有用信息。例如,当我们打开一个像“stackoverflow.com”这样的网站时,服务器会向我们发送一个HTML文件,供浏览器解释。在此之前,我们需要知道HTML文件的大小

幸运的是,服务器预先用
Content Length:1337
行告诉我们,文件大1337字节。文件本身将出现在
占位符所在的位置

这其中还有很多


正如您所看到的,在使用HTTP时需要考虑很多事情,这表明如果没有很好的理由,从头实现HTTP客户机/服务器是不可行的

相反,最好使用上面列出的一个框架(用于python)


最后,请注意: 在尽可能简单地解释这些概念的过程中,我可能遗漏了或过于简化了一些东西。如果你发现任何错误,请告诉我

有人能给我解释一下如何使用这个协议吗?HTTP数据包的形式是什么

关于webz,您可以在RFC上找到很多规范。 更多信息请参见下面的HTTP


(由于您似乎是编程新手,我想我可能想告诉您以下内容:)

通常不直接与HTTP(S)数据包交互。相反,您使用的是一个框架,例如,等等。框架的选择取决于用例。例如:

  • 你需要一个数据库、身份验证和任何可以想象的功能吗?和Django一起去
  • 您只想创建一个没有臃肿框架的Web应用程序?和烧瓶一起去
  • 你需要最低限度,还是想充当客户?和aiohttp一起去
列出了更多的框架

使用这种框架的优点是,它们通常包含有用的东西,这些东西经过了测试(即通常没有bug),而您不必找出某些协议的特殊性

您只需导入框架并编写awesomeness!:)


(无论如何,这里有一个非常简单的完整性概述)

所以,HTTP是TCP上的文本协议,这基本上意味着通过简单的TCP发送文本。当您收到请求时,您必须“解析”(即理解其内容)。幸运的是,我们的请求是标准化的,并且遵循相同的方案

最小的请求如下所示:

GET / HTTP/1.0
Host: www.server.com
HTTP/1.0 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: 1337
Connection: close
Content-Type: text/html

<DATA>
第一行从w开始