gpt4 book ai didi

python - 如何确保发送完整数据?发送到(udp 套接字)Python

转载 作者:可可西里 更新时间:2023-11-01 02:45:08 25 4
gpt4 key购买 nike

首先,我知道 TCP 和 UDP 之间的区别,而且我知道,使用 UDP 时可能会丢失一些数据包。

但是,当我们假设我为 UDP 设计了一个带有一些简单 ACK 的协议(protocol)时,我如何确保我发送/接收了完整的数据?

例如,对于 TCP 套接字,它非常简单:

接收:

def recvall(sock, n): 
i = 0
data = ""
while i < n:
data += sock.recv(1)
i += 1
return data

然后发送:sock.sendall(msg)

在使用 UDP 套接字时应该如何做类似的事情?

最佳答案

如果您想确保您的客户端接收到所有数据,请使用 TCP。 UDP 不适用于需要确保数据完整性的情况。只有在可以接受丢包的情况下才使用 UDP。

话虽如此,您可以通过在 UDP 数据包中放入序列号来检查客户端是否收到了所有数据。然后,您的客户端可以检查每个传入数据包的序列号,并将其与它看到的最后一个序列号进行比较。如果 current_packet_sequence_num != last_packet_sequence_num + 1 那么您可以假设您的客户端没有收到所有数据。

关于python - 如何确保发送完整数据?发送到(udp 套接字)Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44636831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com