当任何两个电子设备需要相互通信时,它们必须使用通用协议或消息系统。如果一个设备尝试使用协议A发送消息而另一个设备正在使用协议B,则这两个设备永远不能交换数据(他们会将对方的消息视为垃圾)。因此,为了使互联网正常运行,设备必须使用通用协议进行通信,这就是IP或互联网协议的用武之地。
IP本身相当复杂,由帧,标题,位置组成,等,但幸运的是,大多数互联网控制器,如以太网IC和Wi-Fi适配器自动处理协议。这通常意味着用户只需要发送简单的命令,例如“打开套接字到IP设备”和“发送此数据包”。
UDP Internet协议
但是,IP只是通过打开发送器和接收器上的套接字来处理物理通信链路(因此可以传输二进制数据)。理解这一点的一种简单方法是将IP视为物理链接两个设备的系统(例如使用以太网电缆连接两台计算机),因此当一台设备发出两位数据时,另一台设备将看到相同的两台相同的数据位。要让两个设备了解这些位实际意味着什么,我们需要使用消息传递协议。虽然互联网上使用了许多协议,但最常见的协议称为HTTP。
HTTP或超文本传输协议定义了如何解释通过两个设备之间的套接字发送/接收的数据。 HTTP(HTTPS是加密的安全版本),是现有的每个网站上使用的协议,非常简单。但HTTP并不仅限于网站。我们也可以将它用于物联网应用,这就是你现在需要学习的原因!
为什么HTTP如此惊人
HTTP是一个了不起的协议,原因如下:
所有消息是ASCII文本格式(非常适合数据大小和易用性)
所有行都以car 返回换行符(0x0A 0x0D或\ r \ n)终止
所有消息都“按原样”并且根本没有掺假(即原始文本)
可以使用字符串数据类型在代码中轻松实现
当客户端(例如PC或平板电脑)想要打开网页(例如,index.html)时,客户端首先需要打开一个套接字才能连接到端口80上有问题的服务器。
在本文中,我们将使用The Gentleman Maker的MicroPython代码:All About Circuits上的IoT Teapotproject。这段代码不是HTTP,而是IP,它是我们的客户端和服务器连接在一起的。
第一行创建一个名为sock的套接字对象,第二行获取网站的IP地址我们想要连接到端口80(因为它可以动态更改),最后一行创建一个地址对象,包括服务器的IP地址和端口号。您需要更改的唯一参数是“iot.yourwebsite.co.uk”到您要连接的任何网站。
知道IP地址,是时候打开客户端和服务器之间的连接。使用下面显示的命令很容易做到:
如果一切按计划进行,您现在应该在客户端和服务器之间建立了链接。此时,您可以使用sock.send(此处为您的数据)通过套接字发送数据,但如果服务器不理解数据,则会响应错误代码。那么,让我们学习如何使用GET命令请求数据!
**注意:确保您通过套接字发送的任何数据都被编码为二进制格式,因为MicroPython中的套接字只发送二进制数据!
GET命令
GET是用于指令的命令请求网页或文件内容,例如.html,.htm和.txt。 GET消息至少包含三行(所有行都以回车换行符终止):
GET 《您想要的文件》 HTTP/1.1 \ r \ n
主持人:《网站域名》 \ r \ n
\ r \ n
第一行以GET,然后是需要的文件。例如,如果我们想要index.html文件,我们将用/index.html替换上面显示的文本。第二行是主机域,例如maker.pro,但不包括http或www。最后一行是一个空行,必须是空的!这表示消息结束,服务器将识别它现在需要处理GET请求。完整的消息和使其工作的代码如下所示。
HTTP响应
发送请求后,服务器将处理该消息,然后发送响应。响应将包含三个主要部分:
成功/错误代码
元数据
请求的文件内容
为了更好地理解响应内容,让我们看一下茶壶项目的GET请求。
成功/错误代码是以黄色突出显示的第一行,如果请求成功或失败,则通知客户端。此行上的第二个数字(在本例中为200)是响应代码,可用于确定是否出现错误(非常常见的错误代码为404,这意味着所请求的文件不存在)。所以让我们看看一些常见的错误代码。
200 - 好的 - 一切顺利:)
400 - 错误请求
401 - 未经授权的访问
403 - 禁止访问
404 - 未找到
408 - 请求超时
429 - 请求过多
500 - 内部服务器错误
502 - 错误网关
下一部分数据(以蓝色突出显示)是元数据,其中包括当前日期/时间,服务器类型,编码方法,数据类型和数据长度等信息。最后一块数据(以绿色突出显示)是所请求文件的内容。
POST命令
我们将看到的第二个命令是POST命令,它用于将数据发送到服务器。在处理需要上传传感器数据或命令以控制其他设备的物联网设备时,这非常有用。通常,POST用于将数据发送到php脚本文件,然后该脚本文件可以根据提交的数据的值执行操作。那么让我们看看我们如何将一些变量发送到php页面!
和以前一样,第一行有POST命令和我们发送的页面数据到。接下来的几行(以蓝色突出显示)是元数据,其中包括正在发送的内容类型及其大小(请记住,在内容长度之后需要有一个空行),最后一行是我们的数据发送。在这种情况下,php脚本将接收两个名为temperature(其值为10)和湿度(其值为20)的变量。
结论
这篇文章只是在HTTP权力的表面上擦除。通过在PHP中编码网站,添加登录页面以及了解错误代码,我们可以使任何支持互联网的设备从互联网获取信息并将数据上传到网站。
-
HTTP
+关注
关注
0文章
510浏览量
31251
发布评论请先 登录
相关推荐
评论