用Python发送UDP数据包
今天,我们将学习用户数据报协议(UDP),看看我们如何使用Python编程来发送UDP数据包。
在Python中发送UDP数据包
用户数据报协议 (UDP) 和 TCP/IP 的操作方式不同。UDP是一个面向消息的协议,与TCP相反,后者是一个面向流的协议,确保所有数据按正确的顺序传输。
设置UDP套接字要容易一些,因为UDP不需要持续很长时间的连接。另一方面,与TCP不同,UDP消息的传递没有保证,它们必须适合在一个数据包中。
我们怎样才能在Python中做到这一点呢?Python 有一个内置的模块叫socket
,你必须导入。
import socket
一旦我们导入了socket
模块,我们必须说明我们将尝试发送 UDP 消息的端口号和 IP 地址。
IP = "127.0.0.1"
PORT = 5003
Message = "Info"
现在是时候建立socket
,我们将通过它向服务器发送我们的UDP消息,现在我们已经说明了这几个变量。
Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.sendto(Message, (IP,PORT))
你必须创建两个文件;client.py
和server.py
。客户端和服务器文件都必须在相应的服务器和客户端系统中。
一旦创建了客户端程序,下一步就是制作服务器程序,它将监视指定的IP地址和端口号的任何UDP数据包。
注意,客户端的Python脚本必须在这个服务器之前执行,否则,客户端的Python脚本将失败。
一旦我们导入了socket
模块并提供了我们的 IP 地址和端口号,我们就可以创建另一个socket
,它将与我们在客户端程序中制作的socket
完全相似。
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))
输出:
sending information
The meeting is From 10 pm. to 127.0.0.1:5003
你还应该写一些代码来维持你的脚本持续地监听这个连接,直到你建立了你的服务器socket
,它就会终止。
它的形式是一个简单的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}")
输出:
start listening to 127.0.0.1:5003
received message: The meeting is From 10 pm.
通过这种方式,我们可以在Python中发送UDP数据包。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。