• 在Python中发送UDP数据包


    今天,我们将学习用户数据报协议(UDP),并了解如何使用 Python 编程发送 UDP 数据包。


    在Python中发送UDP数据包

    用户数据报协议 (UDP) 和 TCP/IP 的运行方式不同。 UDP 是一种面向消息的协议,与 TCP 不同,TCP 是一种面向流的协议,可确保所有数据都按正确的顺序传输。

    设置 UDP 套接字要容易一些,因为 UDP 不需要持续很长时间的连接。 另一方面,与 TCP 不同,UDP 消息的传递并不确定,并且它们必须适合单个数据包。

    我们怎样才能用 Python 做到这一点呢? Python 有一个名为 socket 的内置模块,您必须导入该模块。

    import socket
    
    • 1

    一旦我们导入了套接字模块,我们必须声明我们将尝试发送 UDP 消息的端口号和 IP 地址。

    IP = "127.0.0.1"
    PORT = 5003
    Message = "Info"
    
    • 1
    • 2
    • 3

    现在我们已经声明了这几个变量,现在是时候构建套接字了,我们将通过该套接字将 UDP 消息发送到服务器。

    Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    Sock.sendto(Message, (IP,PORT))
    
    • 1
    • 2

    您必须创建两个文件; 客户端.py 和服务器.py。 客户端和服务器文件必须位于相应的服务器和客户端系统中。

    创建客户端程序后,下一步就是创建服务器程序,该程序将监视指定 IP 地址和端口号的任何 UDP 数据包。

    请注意,客户端 Python 脚本必须在此服务器之前执行,否则客户端 Python 脚本将失败。

    一旦我们导入了套接字模块并提供了 IP 地址和端口号,我们就可以创建另一个套接字,该套接字将与我们在客户端应用程序中创建的套接字完全相同。

    Server.py 文件的示例代码:

    import socket
    IP = "127.0.0.1"
    PORT = 5003
    MESSAGE= "The meeting is From 10 pm."
    
    print(f"sending information")
    print(f"{MESSAGE} to {IP}:{PORT}")
    
    
    sock = socket.socket(socket.AF_INET,
                         socket.SOCK_DGRAM)
    sock.sendto(MESSAGE.encode(), (IP, PORT))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出:

    sending information
    The meeting is From 10 pm. to 127.0.0.1:5003
    
    • 1
    • 2

    您还应该编写代码来维护您的脚本不断侦听此连接,直到构建服务器套接字后它终止。

    它采用简单的 while 循环的形式,如下所示:

    Client.py 文件的示例代码:

    import socket
    IP = "127.0.0.1"
    PORT = 5003
    
    sock = socket.socket(socket.AF_INET,
                         socket.SOCK_DGRAM)
    sock.bind((IP, PORT))
    print(f"start listening to {IP}:{PORT}")
    while True:
        data, addr = sock.recvfrom(1024)
        print(f"received message: {data}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输出:

    start listening to 127.0.0.1:5003
    received message: The meeting is From 10 pm.
    
    • 1
    • 2

    这样我们就可以在Python中发送UDP数据包了。

  • 相关阅读:
    Monkey测试
    DVWA之SQL注入
    rpm安装mysql5.7详细教程
    论文投稿必看,审稿人意见互相矛盾,作者该怎么办?
    腾讯大佬资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
    第一篇、了解多线程
    redis和nacos的安装
    电容笔和apple pencil的区别大吗?Ipad好用电容笔推荐
    谷歌开发者社区推荐:《Jetpack Compose 从入门到实战》新书上架,带你踏上 Compose 开发之旅~
    linux-kernel 启动过程 一
  • 原文地址:https://blog.csdn.net/fengqianlang/article/details/133737660