Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 捕获流经USB调制解调器的网络数据_C#_Sockets_Packet Capture_Packet Sniffers - Fatal编程技术网

C# 捕获流经USB调制解调器的网络数据

C# 捕获流经USB调制解调器的网络数据,c#,sockets,packet-capture,packet-sniffers,C#,Sockets,Packet Capture,Packet Sniffers,我试图同时从多个接口捕获网络数据包。我可以用下面提到的代码来实现这一点,但如果我连接了USB调制解调器,则在选择该IP时会出现异常。异常来自行mainSocket.IOControl(IOControlCode.ReceiveAll、byTrue、byOut) 例外是 “引用的对象类型不支持尝试的操作。” 确切的例外是什么?它有内部异常吗?@rene抱歉,我是新来的,不管怎样,我编辑了问题并添加了异常是吗?如果是,您还可以添加错误代码、NativeErrorcode和SocketErrorcod

我试图同时从多个接口捕获网络数据包。我可以用下面提到的代码来实现这一点,但如果我连接了USB调制解调器,则在选择该IP时会出现异常。异常来自行
mainSocket.IOControl(IOControlCode.ReceiveAll、byTrue、byOut)

例外是

“引用的对象类型不支持尝试的操作。”


确切的例外是什么?它有内部异常吗?@rene抱歉,我是新来的,不管怎样,我编辑了问题并添加了异常是吗?如果是,您还可以添加错误代码、NativeErrorcode和SocketErrorcode。您是否尝试不在线程内运行此代码?@rene这是一个SocketException。代码被删除。@rene在对该行代码使用try-catch之后,我可以看到异常之后捕获的数据。不知道为什么?
class SetIp
{
    private Socket mainSocket;
    private byte[] byteData = new byte[4096];

    public void setIP(IPAddress add)
    {
        mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
        mainSocket.Bind(new IPEndPoint(add, 0));
        mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
        Thread MyThread = new Thread(new ThreadStart(() =>
        {
            while (true)
            {
                byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
                byte[] byOut = new byte[4] { 1, 0, 0, 0 }; //Capture outgoing packets

                mainSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);

                mainSocket.Receive(byteData, 0, byteData.Length, SocketFlags.None);

                ParseData(byteData, byteData.Length);

            }
        }));
        MyThread.Start();

    }