在 《MicroPython(ESP32/ESP8266) 实现web控制GPIO》 中有使用到 Python socket 来在开发板上实现一个简单的web服务,但在上文中并未对其进行详细的说明。本文通过结合 Python 官方文档,对 Python socket 编程进行一个梳理,同时加深理解。
socket
这里的 socket 通常指 Network socket,中文名叫网络套接字,主要用于主机间或进程间的数据通讯。相信很多第一次接触这个名词,都会一头雾水,因为这个套接字的翻译有即拗口也很难从字面上理解,而实际上,socket 这个单词,就是插座、接口、插孔的意思,我们可以简单的按这个单词的理解,socket 就是一个接口,当我们定义好插座的形式和内容,然后连接两边的插座,就可以通讯了。
简单的socket通讯实践
下面就开始来尝试用代码实现。既然要实现通讯,那么我们就需要一个服务端和一个客户端。我们需要分别创建两个文件 server.py
和 client.py
,具体代码如下:
# server.py
import socket
HOST = ''
PORT = 5050
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen(2)
coon, addr = s.accept()
with coon:
print('Connected by', addr)
while True:
data = coon.recv(1024)
if not data: