上篇文章已经尝试过使用mongo作为介质,来实现消息的传递;今天这篇文章将尝试socket,来实现消息传递;具体scoket的详细信息,可以网上搜索查看,这篇文章主要是讲解两个树莓派之间如何使用socket通信。
使用mongo文章:https://www.shumeijiang.com/2021/01/24/多个树莓派之间实现通信对话/。
#上图可见,实验用到一个树莓派zero(上),一个树莓派3b+(下);
#server服务端代码
#!/usr/bin/env python
#coding:utf-8
import socket
import time
host = '192.168.0.118' #本机(主机)ip
port = 1026 # 自定义端口
server = socket.socket() #默认AF_INET、SOCK_STREAM
server.bind((host, port)) #连接主机
server.listen(5) #连接最多5个设备
while True:
connect, address = server.accept() #开始接收客户端连接请求
#处理连接交互信息
while True:
data = connect.recv(1024) #接收客户端发送的信息
if not len(data):
print('链接已断开')
break
else:
print('收到信息:%s'%data)
#信息回复
connect.send('ok')
server.close()
#client客户端
#!/usr/bin/env python
#coding:utf-8
import socket
import time
host = '192.168.0.118' #主机地址
port = 1026
client = socket.socket()
client.connect((host, port)) #连接主机
while True:
s = raw_input(">>") #接收输入
client.send(s) #发送给主机信息
data = client.recv(1024) #接收主机回复信息
#主机回复信息处理
if data=='ok':
print('命令传输完成')
client.close()
从上面代码可知,客户端接收用户输入,然后发送给服务端,服务端将信息处理,然后发送给客户端处理状态。
#实验过程:
1、首先启动server端,执行Python server.py;
2、接着启动client端,执行Python client.py;
3、client端,提示">>",输入指令,然后回车发送给服务端;
4、服务端接收到数据,然后处理后将处理状态发送给客户端;
#效果如下图: