树莓派(三) 树莓派间的socket通信(python)

实验场景:

两树莓派置于同一局域网内,一个作为客户端一个作为服务端,通过两个py文件实现socket通信,

使两者可以互相发送和接收消息,具体的socket原理可参考:Socket技术详解


实验代码:

在代码内部设置服务器端的主机ip和端口号,树莓派的ip查询命令如下:

hostname -I

查询到ip地址后,可先通过ping命令查看两树莓派能否拼通:

ping 10.202.25.3

服务器端代码:

#encoding=utf-8
import socket
import time

host = "10.202.25.3"      #服务器ip
port = 6666               #服务器端口号

mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    # 选择IPv4地址以及TCP协议
print "通信服务开启"
mySocket.bind((host, port))   # 绑定端口
mySocket.listen(5)       # 监听这个端口,可连接最多5个设备

if __name__ == '__main__':
    while True:  
        client, address = mySocket.accept()           # 接受客户端的连接请求
        print "连接IP: %s 成功" % address[0]
        try:  
            client.settimeout(120)                 # 设置2min时限
            while True:
                msg = client.recv(1024)       # 接收消息
                if not msg:
                    break
                else:
                    print(b"接收对方消息: "+msg)
                    call(msg)
                mssg = raw_input(b"输入发送消息: ")
                client.send(mssg)     # 发送消息  

        except socket.timeout:                # 超时
            print ('time out')
        
    mySocket.close()          # 关机

客户端代码:

#encoding=utf-8
import socket
import time

HOST = '10.202.35.2'           #服务器的ip
PORT = 6666                    #服务器端口

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #以TCP协议模式进行通信
sock.connect((HOST,PORT))         #连接服务器
while True:
	msg=raw_input(b'输入发送消息:')       #raw_input()将输入自动转化为字符串
	sock.send(msg)                       #发送消息      
	data=sock.recv(1024)                          
	print(b'接受对方消息:'+data)          #接收消息
sock.close()                             #关闭连接

实验结果:

这里添加了控制手机拨打电话的命令,可以结合上一篇去看,简单实现了两端的通信

树莓派(三) 树莓派间的socket通信(python)_第1张图片

你可能感兴趣的:(树莓派使用中的问题,服务器,linux,网络,python,arm开发)