【发布时间】:2020-10-13 12:27:06
【问题描述】:
我使用此代码捕获以太网数据包:
var snapshotLen int32 = 102400
var promiscuous bool = true
var timeout time.Duration = 1 * time.Second
var handle *pcap.Handle
handle, err = pcap.OpenLive(device, snapshotLen, promiscuous, timeout)
err = handle.SetBPFFilter(filter)
packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
for packet := range packetSource.Packets() {
}
问题是 packetSource.Packets() 阻塞:如果没有收到数据包,则存在无限循环。如何设置超时?
【问题讨论】:
-
吹毛求疵:循环的阻塞迭代和无限循环是不同的概念。