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()
  • 相关阅读:
    深刻剖析spring三种注入方式以及使用注解的原理
    springcloud(一):大话Spring Cloud
    springcloud学习资料汇总
    springboot(一):入门篇
    springboot学习资料汇总
    jvm系列(七):如何优化Java GC「译」
    jvm系列(六):Java服务GC参数调优案例
    jvm系列(五):Java GC 分析
    jvm系列(四):jvm调优-命令篇
    android view、viewgroup 事件响应拦截处理机制
  • 原文地址:https://www.cnblogs.com/laod/p/12980663.html
Copyright © 2011-2022 走看看