我正在写一个程序发送/接收数据到使用IPv6 UDP端口的设备。我的python代码运行在Win7平台上,该设备是一个定制硬件。 PC和设备直接连接,不能通过局域网路由。无法发送数据到UDP IPv6套接字,直到我ping
程序工作...有点。当我最初尝试向设备发送消息时,发送失败。更具体地说,正如wireshark所看到的,我从来没有看到消息被发送到设备。当我在命令行上使用ping <ipv6_addr> -t
对设备进行ping操作时,前1或2次尝试失败,之后ping开始接收。我杀死了ping并尝试发送消息,但是现在它成功了。 Wireshark现在显示所有消息。如果我在相对较短的时间内(大约10秒到2分钟之间)发送消息,程序将按预期工作。如果我等待更长时间,我的消息将再次不会被发送。如果我保持ping程序持续ping,则无论消息发送活动之间的时间如何,我的消息也会被发送。这里是我的代码:
import socket
def connect(port):
if socket.has_ipv6:
client = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
client.bind(('', port))
client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
client.settimeout(0.25)
def send_data(addr, port, data):
client.sendto(data, (addr, port))
def main_app():
connect(10000)
bin_data = binascii.a2b_hex('deadbeef')
# Do some processing
send_data(<ipv6_address>, 10000, bin_data)
一些谷歌搜索没有屈服的问题是否是Python或别的东西有什么好的线索,所以我想我会使用Python作为开始看到哪里需要我。
任何援助将不胜感激!
听起来像是某种省电问题,我...,直到它收到一些交通设备可能会进入省电模式(也许只有网卡)的。这是否只发生在IPv6或IPv4上? – Unknown