美文网首页
Python3使用Socket实现树莓派与计算机半双工通信,实现

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

作者: 浪潮之下 | 来源:发表于2019-03-09 22:35 被阅读0次

    项目中需要实现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实现树莓派与计算机半双工通信,实现

          本文链接:https://www.haomeiwen.com/subject/lqcypqtx.html