C#中通过蓝牙发送抓包文件

3
我正在创建一款用于通过蓝牙发送和接收文件的WPF应用程序。我使用32feet库来实现此功能。我可以使用ObexObjectPush蓝牙服务发送文件。
但是,当使用指定此处的技术接收文件时,我的应用程序无法捕获到它,而是被我的电脑捕获了。
以下是我的代码:
  private void Listener(CancellationTokenSource token)
    {
        try
        {
            while (true)
            {
                using (var client = _listener.AcceptBluetoothClient())
                {
                    if (token.IsCancellationRequested)
                    {
                        return;
                    }

                    using (var streamReader = new StreamReader(client.GetStream()))
                    {
                        try
                        {  
                           // ...  Custom operation
                          //....
                        }
                        catch (IOException ex)
                        {                               
                            client.Close();
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception exception)
        {
            // todo handle the exception
        }
    }

我想要做的是捕获通过蓝牙接收的所有文件。目前我的系统会显示一个弹出窗口来接收文件。我想覆盖这个行为,让我的应用程序来接收文件。
非常感谢您提供的任何帮助。

它不会被触发,而是会弹出一个窗口提示正在接收文件。 - Mohit Bora
你创建了SenderBluetoothService吗? - TAHA SULTAN TEMURI
我正在从Android设备发送数据,而不是从WPF应用程序发送。尽管我为WPF创建的SenderBluetoothService成功地将数据发送到Android设备。 - Mohit Bora
@MikePetrichenko 我该如何禁用内置服务? - Mohit Bora
这取决于您使用的蓝牙驱动程序。当然,如果您谈论的是“接受文件”对话框,那么就是这样。如果您谈论的是系统配对对话框,那就是另外一个问题。但是,该对话框也可以被禁用。 - Mike Petrichenko
显示剩余4条评论
1个回答

1
计算机正在捕获接收到的文件,因为它有自己的蓝牙处理程序运行并侦听请求。
为了防止“蓝牙OBEX服务”Windows服务处理接收到的文件而不是您的WPF应用程序,您需要在计算机上停止该服务。
注意:我更喜欢禁用“蓝牙OBEX服务”Windows服务而不是停止它,因为在某些情况下似乎有其他一些服务会导致该服务再次自动启动。通过禁用它,您将避免任何未来的混淆。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接