zoukankan      html  css  js  c++  java
  • UDP基础server与client

    1、基础功能

    1、server端

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)  # 建立一个socket对象,
    # 指定以UDP协议的形式来连接
    sk.bind(('127.0.0.1',8080))
    # 指定服务的地址
    
    msg,addr = sk.recvfrom(1024) # msg为接收到的消息,addr为发送端的地址
    print(msg,addr)
    sk.sendto(b'HELLO',addr)   # 给发送端回复消息,需携带 发送端的地址
    
    sk.close()  # 关闭socket连接

    2、clien端

    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    sk.sendto(b'hello',('127.0.0.1',8080))   # 直接给服务器发送一段消息,需携带目的地址
    msg,addr = sk.recvfrom(1024)   # 接收对面的回信
    print(msg)
    sk.close()

    2、udp聊天小工具

    1、客户端

    
    
    import socket
    ph = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = (("127.0.0.1",8089))
    
    while 1:
        input_msg = input(">>>>>>:")
        ph.sendto(bytes(input_msg,encoding="utf-8"),ip_port)  #向服务端发消息,需携带自己的地址
        msg,adr = ph.recvfrom(1024)
        if msg.decode(encoding="utf-8") == "收到关闭命令,执行关闭连接操作":
            break
        print(msg.decode(encoding="utf-8"))
    
    ph.close()

    #注意:
    input_msg = input(">>>>>>:")最好不要写在循环外面,应该写在循环里面紧靠发送消息时
    
    

    2、服务端

    import socket
    ph = socket.socket(type=socket.SOCK_DGRAM)
    ph.bind(("127.0.0.1",8089))
    
    while 1:
        msg,adr = ph.recvfrom(1024) #接受的客户端的消息及地址
        if msg.decode(encoding="utf-8") == "q":
            ph.sendto(bytes("收到关闭命令,执行关闭连接操作",encoding="utf-8"), adr)
            break
        # print(msg,adr)
        print(msg.decode(encoding="utf-8"))
        input_msg = input(">>>>>>:")
        ph.sendto(input_msg.encode(encoding="utf-8"),adr)#向客户端发送消息,需携带客户端的地址
    ph.close()

    #注意:input_msg = input(">>>>>>:")最好不要写在循环外面,应该写在循环里面紧靠发送消息时

    总结:

    #UDP server 不需要建立连接,也不需要监听
    #在启动服务之后只能被动的接收消息
    #客户端发送消息的同时还会自带地址信息
    #回复消息的时候,不仅需要发送消息,还需要发送对方的地址
  • 相关阅读:
    CentOS7.5 搭建MyCat1.6.6
    idea快速搭建springboot项目
    MySQL存储过程中变量及循环的使用
    windows 安装 jdk1.8并配置环境变量
    CentOS7.5安装JDK1.8
    CentOS7.2安装MySql5.7并开启远程连接授权
    PHP高级工程师面试
    每日英语
    静态化
    php分页实例及其原理
  • 原文地址:https://www.cnblogs.com/huoyunxieshen/p/10852437.html
Copyright © 2011-2022 走看看