如何识别蓝牙客户端?

时间:2017-10-05 08:31:42

标签: c# bluetooth 32feet

我连接多个蓝牙客户端并将它们存储在列表中:

BluetoothListener blueListener = new BluetoothListener(mUUID);
blueListener.Start();

while (true)
{
    try
    {
        //accept available clients for connection
        BluetoothClient localClient = blueListener.AcceptBluetoothClient();
        myClientList.Add(localClient);

    }

    catch(Exception e)
    { }
}

现在,当某个客户端意外断开连接时,我想将其从列表中删除。我尝试使用客户的属性' LinkKey'为了检测断开连接的客户端,但我得到运行时错误。

  

在a中指定了未知,无效或不受支持的选项或级别   getsockopt或setsockopt调用

     

StackTrace ="在   System.Net.Sockets.Socket.GetSocketOption(SocketOptionLevel   optionLevel,SocketOptionName optionName,Int32 optionLength)\ r \ n at   InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.get_LinkKey(个)\ r \ n
  在MSBusinessLogicPack.BluetoothLogic.BTServerCl ...

一旦我尝试获取LinkKey值,即使客户端仍然连接,也会发生此异常。

这是我用来从列表中删除客户端的代码,假设我有办法识别客户端,我目前不知道:

public override void ClientDisconnected(Guid clidenID)
{
    int removeIndex = myClientList.FindIndex(x => x.LinkKey == clidenID);

    myClientList.RemoveAt(removeIndex);


}

1 个答案:

答案 0 :(得分:0)

你可以包装     int removeIndex = myClientList.FindIndex(x => x.LinkKey == clidenID);

使用try catch块,捕获抛出的确切异常类,并从catch部分的列表中删除客户端。