Python 为什么不';我没有收到任何UDP数据吗?

Python 为什么不';我没有收到任何UDP数据吗?,python,windows-7,udp,Python,Windows 7,Udp,我有一个简单的Python脚本,它试图侦听发送到我机器上的有线以太网适配器(设置为静态IP 10.10.5.51)的任何UDP数据: import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) s.bind(('10.10.5.51', 72)) while True: print(s.recvfrom(65535)) 我可以从wireshark看到我的机器正在该端口上接收

我有一个简单的Python脚本,它试图侦听发送到我机器上的有线以太网适配器(设置为静态IP 10.10.5.51)的任何UDP数据:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.bind(('10.10.5.51', 72))
while True:
    print(s.recvfrom(65535))
我可以从wireshark看到我的机器正在该端口上接收数据,那么为什么Python脚本没有报告任何内容呢

Edit1-测试本地地址

我尝试绑定到“127.0.0.1”并与以下发送方/接收方发送到同一地址,但效果良好

发件人:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
source_port = 73
dest_port = 72
address = '127.0.0.1'
s.bind((address, source_port))
print("Sending from port: %d"%source_port)
while True:
    print(s.sendto(bytes('Testing..','UTF-8'), (address, dest_port)))
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
source_port = 11000
dest_port = 72
address = '10.10.20.51'
s.bind((address, source_port))
print("Bound to address: "+address)
print("Sending from port %d to port %d"%(source_port,dest_port))
while True:
    s.sendto(bytes('Testing..','UTF-8'), (address, dest_port))
接收人:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
port = 72
s.bind(('127.0.0.1', port))
print("Listening on port: %d"%port)
while True:
    print(s.recvfrom(65535))
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
port = 72
address = '10.10.20.51'
s.bind((address, port))
print("Listening on %s:%d"%(address,port))
while True:
    print(s.recvfrom(65535))
如果我将地址更改为以太网卡的地址(10.10.5.51),那么我什么也看不到(wireshark甚至没有显示任何流量)

Edit2-更高的源端口

如果我偶然将源端口转换为非特权端口(例如11000),我现在可以看到Python发送方正在生成的通信量

发件人:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
source_port = 73
dest_port = 72
address = '127.0.0.1'
s.bind((address, source_port))
print("Sending from port: %d"%source_port)
while True:
    print(s.sendto(bytes('Testing..','UTF-8'), (address, dest_port)))
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
source_port = 11000
dest_port = 72
address = '10.10.20.51'
s.bind((address, source_port))
print("Bound to address: "+address)
print("Sending from port %d to port %d"%(source_port,dest_port))
while True:
    s.sendto(bytes('Testing..','UTF-8'), (address, dest_port))
接收人:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
port = 72
s.bind(('127.0.0.1', port))
print("Listening on port: %d"%port)
while True:
    print(s.recvfrom(65535))
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
port = 72
address = '10.10.20.51'
s.bind((address, port))
print("Listening on %s:%d"%(address,port))
while True:
    print(s.recvfrom(65535))

…但我仍然没有看到wireshark报告的流量。有没有可能我的Python接收器绑定到了错误的适配器或类似的东西?

我不确定您是否尝试使用本地主机地址“127.0.0.1”或“0.0.0.0”

我没有看到问题,但将这个s.bind('10.10.5.51',72))更改为s.bind('0.0.0',72))确保使用“0.0.0.0”无效。您是否以特权用户身份运行代码?普通用户通常无法打开低端口号(如72)。他没有提到任何错误,而且他使用的是windows 7,因此在使用低端口时不会出现任何问题。是否可能有防火墙阻止了您的应用程序?尝试了这两种方法均无效。