代码之家  ›  专栏  ›  技术社区  ›  SomeBody

SharpPcap-丢弃传入的数据包

  •  0
  • SomeBody  · 技术社区  · 7 年前

    我正在编写一个通过以太网与外部设备通信的C应用程序。我正在使用SharpPcap 4.5.0版来实现这一点。

    不幸的是,我不得不意识到一些传入的数据包被丢弃了。为了测试,我还在外部设备和我的计算机之间设置了一个交换机,它还记录每个数据包。在这个日志中,包是可见的。因此,我非常确定数据包确实被发送了(这不是外部设备的错误)。

    public bool TryActivateChannel(uint channelNumber, out string message)
        {
            message = string.Empty;
            devices[(int)channelNumber].Open(DeviceMode.Promiscuous);
            devices[(int)channelNumber].OnPacketArrival += PacketArrived;
            devices[(int)channelNumber].StartCapture();
            return true;
        }
    
    public bool CloseChannel(uint channelNumber, out string message)
            {
                message = string.Empty;
                devices[(int)channelNumber].OnPacketArrival -= PacketArrived;
                devices[(int)channelNumber].Close();
                return true;
            }
    private void PacketArrived(object sender, CaptureEventArgs e)
            {
                if (e.Packet.LinkLayerType != PacketDotNet.LinkLayers.Ethernet)
                {
                    return;
                }
                else
                {
                    inputQueue.Enqueue(e);
                }
    }
    

    在这一点上,我真的很无助。我的代码有没有做错什么?这是已知问题吗?我在其他地方读到SharpPcap可以处理高达3mbit/s的数据。我离这个值很远,因此我不认为这是性能问题。

    附录:

    0 回复  |  直到 7 年前
    推荐文章