为什么我的基本 python UDP 客户端会收到 ConnectionResetError?

Why am I getting a ConnectionResetError for my basic python UDP client?

我在 VMWare Workstation 16 Player 上的 2020.4 Kali Linux VM 上工作,我正在使用 Justin Seitz 的 Black Hat Python 一书。就在第 2 章的开头,他介绍了一个基本的 UDP 客户端,但由于某种原因,我每次都会抛出一个 ConnectionResetError,因为我发送到的端口或我从中接收的端口被占用。然后我添加了一行以使其绑定到我要发送到的地址并且它起作用了。当我发送到()时它不会自动绑定吗?如果我在进行渗透测试,那么在创建 UDP 客户端时我不需要 password/admin 进行绑定。

这是我的代码:

import socket


address = ('127.0.0.1', 80)

# Create a socket object.
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# I commented this out just for testing reasons.
# client.bind(address)

# Send some data.
client.sendto(b'AAABBBCCC', address)

# Receive some data.
data, addr = client.recvfrom(4096)

print(data)

错误如下:

Traceback (most recent call last):
  File ".\udp_client.py", line 15, in <module>
    data, addr = client.recvfrom(4096)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

如果这是我的愚蠢错误,我提前道歉。

编辑:

我更改了代码以使用不同的端口 (65536) 但现在它不打印任何内容或结束脚本,它只是保持 运行.

我建议您尝试使用 80 端口以外的端口(所有 HTTP 流量的默认端口),该端口可能经常被使用并且不适合尝试并坚持下去,请尝试端口号 > 1023