zoukankan      html  css  js  c++  java
  • 037.Python的UDP语法


    UDP语法

    1 创建一个socket的UDP对象

    import socket
    
    #创建对象  socket.SOCK_DGRAM 代表UDP协议
    sk = socket.socket(type=socket.SOCK_DGRAM)
    print (sk)

    执行

    复制代码
    [root@node10 tcp]# python3 server.py
    <socket.socket fd=3, 
    family=AddressFamily.AF_INET,
    type=SocketKind.SOCK_DGRAM,
    proto=0,
    laddr=('0.0.0.0', 0)>
    复制代码

    2 创建UAP连接

    服务端

    复制代码
    import socket
    
    #创建对象  socket.SOCK_DGRAM 代表UDP协议
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    #在网络中注册该主机
    sk.bind ( ("127.0.0.1",9000) )
    
    #udp服务器,第一次启动时,一定是先接收数据,在发送数据
    msg,cli_addr = sk.recvfrom(1024)
    print (msg.decode("utf-8"))
    
    #关闭udp连接
    sk.close()
    复制代码

    客户端

    复制代码
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    #sendto (要发送的消息,(IP地址,端口号))
    sendto ("Nice to meet you!".encode("utf-8"),("127.0.0.1",9000) )
    #关闭连接
    sk.close()
    复制代码

    先执行服务端

    [root@node10 tcp]# python3 server.py

    被阻塞,查看端口信息

    再执行客户端

    服务端收到消息

    [root@node10 tcp]# python3 server.py
    Nice to meet you!

    3 循环发消息

    服务端

    复制代码
    #服务端
    import socket
    
    #创建对象  socket.SOCK_DGRAM 代表UDP协议
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    #在网络中注册该主机
    sk.bind ( ("127.0.0.1",9000) )
    
    #udp服务器,第一次启动时,一定是先接收数据,在发送数据
    while True:
            msg,cli_addr = sk.recvfrom(1024)
            print (msg.decode("utf-8"))
            print (cli_addr)
    
    #关闭udp连接
    sk.close()
    复制代码

    客户端

    复制代码
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    #sendto (要发送的消息,(IP地址,端口号))
    while True:
            message = input("Please input the value:")
            sk.sendto (message.encode("utf-8"),("127.0.0.1",9000) )
    #关闭连接
    sk.close()
    复制代码

    执行

    复制代码
    [root@node10 tcp]# python3 server.py
    Hello                                #服务端接收的消息
    ('127.0.0.1', 34236)                  #打印出客户端的地址端口
    Nice to meet you!
    ('127.0.0.1', 34236)
    [root@node10 tcp]# python3 client.py  #客户端发送消息
    Please input the value:Hello
    Please input the value:Nice to meet you!
    复制代码

    4 服务端同时发送消息给客户端

    服务端

    复制代码
    #服务端
    import socket
    
    #创建对象  socket.SOCK_DGRAM 代表UDP协议
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    #在网络中注册该主机
    sk.bind ( ("127.0.0.1",9000) )
    
    #udp服务器,第一次启动时,一定是先接收数据,在发送数据
    while True:
            msg,cli_addr = sk.recvfrom(1024)
            print (msg.decode("utf-8"))
            print (cli_addr)
            #发送消息
            message = input("Please input your vaule>>>:")
            sk.sendto(message.encode("utf-8"),cli_addr)
    #关闭udp连接
    sk.close()
    复制代码

    客户端

    复制代码
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    #sendto (要发送的消息,(IP地址,端口号))
    while True:
            message = input("Please input the value:")
            sk.sendto (message.encode("utf-8"),("127.0.0.1",9000) )
            #接收数据
            msg,ser_addr = sk.recvfrom(1024)
            print (msg.decode("utf-8"))
    #关闭连接
    sk.close()
    复制代码

    执行

    复制代码
    [root@node10 tcp]# python3 server.py
    Hi      #服务端接收数据
    ('127.0.0.1', 41800)
    Please input your vaule>>>:Hi    #服务端发送的数据
    Nice to meet you!
    ('127.0.0.1', 41800)
    Please input your vaule>>>:Nice to meet you too!
    [root@node10 tcp]# python3 client.py
    Please input the value:Hi   #客户端发送数据
    Hi                           #客户端接收到的数据
    Please input the value:Nice to meet you!
    Nice to meet you too!
    Please input the value:
    复制代码
    学习记录,小白一枚
  • 相关阅读:
    [bzoj3295][Cqoi2011][动态逆序对] (树套树)
    [bzoj3209][花神的数论题] (数位dp+费马小定理)
    [bzoj1026][SCOI2009][windy数] (数位dp)
    [bzoj4521][Cqoi2016][手机号码] (数位dp+记忆化搜索)
    [bzoj1833][ZJOI2010][count] (数位dp)
    [spoj1182][Sorted Bit Sequence] (数位dp)
    [ural1057][Amount of Degrees] (数位dp+进制模型)
    [hdu3652][B-number] (数位dp)
    【bzoj2523】【CTSC2001】聪明的学生
    友情链接(有的是单向的)
  • 原文地址:https://www.cnblogs.com/wangsirde0428/p/14322642.html
Copyright © 2011-2022 走看看