为什么我没有收到任何UDP数据?

时间:2015-09-29 09:01:39

标签: python windows-7 udp

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

    viewPager.addOnPageChangeListener(newTabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.setTabsFromPagerAdapter(mAdapter);

我可以从wireshark看到我的机器正在接收该端口上的数据,那么为什么Python脚本没有报告任何内容?

编辑1 - 测试本地地址

我尝试绑定到' 127.0.0.1'并使用以下发件人/收件人发送到同一地址,并且有效...

发件人:

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))

接收器:

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)))

如果我将地址更改为以太网卡(10.10.5.51)的地址,那么我什么也看不见(并且wireshark甚至没有显示任何流量)。

Edit2 - 更高的源端口

如果我将源端口发送到非特权端口(例如11000),我现在可以看到Python发送者正在生成的流量......

发件人:

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)
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))

...但我还没有看到wireshark报道的流量。我的Python接收器是否有可能以某种方式绑定到错误的适配器或类似的东西?

1 个答案:

答案 0 :(得分:0)

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