我正在寫一個程序發送/接收數據到使用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