zoukankan      html  css  js  c++  java
  • python_网络编程socket(UDP)

    服务端:

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)  #创建基于UDP协议的socket对象
    sk.bind(('127.0.0.1',8099))     #把地址绑定到套接字
    
    msg,addr = sk.recvfrom(1024)   #接收数据和数据的地址(数据大小)
    print(msg.decode('utf-8'))  #打印
    sk.sendto(b'wdc',addr)   #发送数据和接收的数据的地址
    
    sk.close()  #关闭连接

    客户都:

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)   #创建基于UDP协议的socket对象
    ip_port = ('127.0.0.1',8099)    #将地址和端口号放在一共元组里面
    
    sk.sendto(b'yhf',ip_port)   #发送数据和地址
    ret,addr = sk.recvfrom(1024)    #接收数据和数据的地址(数据大小)
    print(ret.decode('utf-8'))
    sk.close()  #关闭连接
    • UDP的server不需要进行监听也不需要建立连接
    • 在启动服务之后只能被动的等待客户都发送信息过来
    • 客户都发送消息的同时还会,自带地址信息
    • 消息回复的时候,不仅需要发送消息,还需要把自己的地址填写上

    实例:多客户端通信

      服务端:

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8099))
    
    while True:
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
        info = input('>>>')
        info = ('来自服务器的消息:{}'.format(info)).encode('utf-8')
        sk.sendto(info,addr)
    
    sk.close()

      客户端1:

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    ip_port = ('127.0.0.1',8099)
    
    while True:
        info = input('大哥:')
        info = ('来自大哥的消息:{}'.format(info)).encode('utf-8')
        sk.sendto(info,ip_port)
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
    
    sk.close()

      客户端2:

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    
    ip_port = ('127.0.0.1',8099)
    
    while True:
        info = input('二哥:')
        info = ('来自二哥的消息:{}'.format(info)).encode('utf-8')
        sk.sendto(info, ip_port)
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
    
    sk.close()
  • 相关阅读:
    [CF1166E] The LCMs Must be Large
    AtCoder Beginner Contest 161
    [CF1168B] Good Triple
    [CF1172B] Nauuo and Circle
    [CF1185E] Polycarp and Snakes
    [CF1187E] Tree Painting
    Codeforces Round #631 (Div. 2)
    [CF1200E] Compress Words
    Thinkphp绕过宝塔getshell
    如何成为一个漏洞赏金猎人
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11694949.html
Copyright © 2011-2022 走看看