zoukankan      html  css  js  c++  java
  • Python Socket UDP 实现一个两端聊天功能

    实现client端于server端进行socket UPD通信
    Client端向Server端发起消息,Server端收到之后进行回复
    Server端代码
    import socket
    '''
        思路:
            1、建立socket
            2、绑定ip和port
            3、接受访问
            3、消息回馈
    '''
    
    def ServerApp():
    
        # 1、建立socket
        # socket.AF_INET:使用ipv4协议
        # socket.SOCK_DGRAM:使用UDP通信
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 2、绑定ip和port
        # 192.168.200.2 这是Server端的IP地址
        # 1914 端口
        # 地址是一个tuple类型,(ip,port)
        addr = ("192.168.200.2", 1914)
        sock.bind(addr)
    
        # 3、接受消息
        # 等待方式为四等、一直等待接受消息
        # recvfrom 接收铺得返回值因为有个元祖(tuple)、前一项表示数据,后一项表示地址
        # data为对方发送的消息、addr为对方的ip地址
        data, addr = sock.recvfrom(500)
        # 查看对方传过来的数据、以及数据类型
        # print(data)
        # print(type(data))
    
        # 发送过来的是bytes格式,必须通过解码才能得到str格式的内容,如何解码?
        text = data.decode()
        print(text)
        # print(type(text))
    
        # 4、消息回馈
        # 第四步可以不用做,但是为了练习,测试一下嘛
        # 给对方返回的消息
        rsp = "好的,我收到了 谢谢"
        # 发送的数据也需要编码成bytes格式
        # 默认为utp8   rsp.encode(默认为utp8)
        data = rsp.encode()
        sock.sendto(data, addr)
    
    if __name__=='__main__':
        print("Starting Server......")
        ServerApp()
        print("Ending Server......")

    Client端代码

    import socket
    '''
    -   Client端流程
            1、建立通信的Socket
            2、发送内容到指定服务器
            3、接受服务器给定的反馈内容
    '''
    
    
    def ClientApp():
        sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        text = input("请输入你的留言:")
        data = text.encode()
        # 发送
        sock.sendto(data, ("192.168.200.2", 1914))
    
        data, addr = sock.recvfrom(500)
    
        data = data.decode()
        print(data)
    
    if __name__ == '__main__':
        ClientApp()
  • 相关阅读:
    Golang 需要避免踩的 50 个坑(二)
    Golang 需要避免踩的 50 个坑1
    Golang两种执行流程以及区别
    go安装配置
    h5表单亲测
    HTML5-表单 自带验证
    后台日志实现
    jQuery Validate验证框架详解,提交前验证
    用cProfile做性能分析【转】
    tmux 如何翻页
  • 原文地址:https://www.cnblogs.com/laod/p/12980663.html
Copyright © 2011-2022 走看看