gpt4 book ai didi

python - 发送到未监听的ip/port时,Python的UDP崩溃

转载 作者:行者123 更新时间:2023-12-03 11:44:50 25 4
gpt4 key购买 nike

如果您将UDP数据包发送到未监听的随机ip /端口,python是否会关闭发送该数据包的服务器(导致崩溃)?

我是在做错什么还是错误?

问题示例:

import socket

# Launch the server
try:
Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.bind(("127.0.0.1", 25565))
except:
print("Failed to launch server")

# Send a packet to a random (closed) place
# Comment out this line to prevent error
Sock.sendto(b'', ("127.0.0.1", 4623))


while True:
# Wait for data
print("Listening for data")
data, addr = Sock.recvfrom(1024)

错误:

line 18, in data, addr = Sock.recvfrom(1024) ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

最佳答案

即使在UDP套接字上,recvfrom也会失败。例如,如果先前的发送尝试将数据包发送到没有人正在侦听端口的系统,而接收方发送回无法到达的ICMP,则可以执行此操作。

您的服务器仅崩溃是因为您不希望recvfrom失败,即,没有像使用bind那样将其包装到try块中。如果使用此类块捕获了预期的错误,则服务器不会崩溃,但可以正确处理该错误。

关于python - 发送到未监听的ip/port时,Python的UDP崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916411/

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