Python3使用Socket实现树莓派与计算机半双工通信,实现聊天功能

项目中需要实现PC与树莓派通信完成控制,寻找一遍后,发现现例子大多比较简单,可以实现一次收发过程,第二次数据发送就会出现问题。观察发现少一个循环,无法保持联通状态,代码修改后可以简单的实现半双工通信,实现简单聊天应答功能。

首先在命令行下ipconfig 查出设备ip。client与server端为同一ip,以server端为准。

server端代码

import socket
HOST = '192.168.0.100'        # 连接本地服务器
PORT = 8001               # 设置端口号
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)       # 选择IPv4地址以及TCP协议
sock.bind((HOST, PORT))          # 绑定端口
sock.listen(5)                   # 监听这个端口,可连接最多5个设备

while True:  
    connection, address = sock.accept()              # 接受客户端的连接请求
    Building_connection = connection.recv(1024)                      # 接收数据实例化
    if Building_connection==b"request":
        print("connection is ok!")
        connection.send(b'welcome to server!')       #服务器已经连接
    
    while Building_connection==b"request":
        a= connection.recv(1024)                               #循环,持续通讯接收数据
        if a==b"exit":
            connection.send(b"close")
            break
        if a!=b"request"and a: 
            print("接收端:")
            print((a).decode())
            print("服务端:")
            se=input()
            connection.send((se).encode("utf-8"))   
            print("")

    break
connection.close() 
print("连接关闭")

client端代码

import socket
HOST = '192.168.0.100'
PORT = 8001
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
sock.connect((HOST, PORT))  

print("try to connect distance server")
sock.send(b'request')
re_mes=sock.recv(1024).decode()
print(re_mes)

if re_mes=="welcome to server!":
    while 1:
        print("接收端:")
        a=input()
        sock.send((a).encode("utf-8"))
        print("服务端:")
        re_mes=sock.recv(1024).decode()
        if re_mes=="close":
            break
        print(re_mes)
        print("")

sock.close() 
print("连接关闭")

你可能感兴趣的:(Python3使用Socket实现树莓派与计算机半双工通信,实现聊天功能)