Python中的数据报
数据报是两个端点之间的一种无线通信,它需要 IP 地址和端口号来建立连接。数据报使用UDP(用户数据报协议),它将用户数据转换为小数据包或数据块,以便可以通过网络以连续的方式发送。在UDP类型的连接中,数据包在发送者端没有记录,它只是由用户发送,然后由接收者决定是否接受数据包。我们在视频会议或视频通话中使用的 UDP 连接类型。
下面我们来学习如何在 localhost 网络上发送一些数据并在同一台机器上接收与接收者相同的数据来演示数据报的使用。
要了解您计算机的 IP 配置,请在终端上使用以下命令:
ipconfig
代码#1:发件人端。
# importing socket module
import socket
UDP_IP = "localhost"
UDP_PORT = 8080
MESSAGE = "GeeksforGeeks"
print ("message:", MESSAGE)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))
输出:
message: Geeksforgeeks
解释:
- 指定您的 IPv4 地址代替UDP_IP并记住端口号 8080 是您的本地主机端口号,因此您需要指定相同的端口号。
-
socket.socket()
使用AF_INET来使用系统的 IPv4 地址,而SOCK_DGRAM是我们用于通信的一种协议。 - 使用sock对象调用函数
sendto()
,然后传递包含 IP 地址和端口号的元组参数。
步骤#2:在接收器端。
# importing socket module
import socket
UDP_IP = "localhost"
UDP_PORT = 8080
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
while True:
# buffer size is 1024 bytes
data, addr = sock.recvfrom(1024)
print ("Received message:", data)
输出:
Received Message: b'Geeksforgeeks'
解释:
- 我们需要在
UDP_IP
中指定 localhost IP 地址,并使用与上面相同的socket.socket()函数。 - 将参数绑定到套接字对象,以便我们在此端捕获在这些端口地址接收到的任何内容。在循环中,定义缓冲区大小为1024,因为消息不大,所以缓冲区大小足够了。