publishCommand,ApplicationClient之后的SocketException

时间:2019-03-31 16:37:43

标签: c# ibm-cloud watson-iot

我已经在IBM Watson IoT Platform中创建了一个应用程序,并且使用了提供的代码示例来连接ApplicationCLient对象。

连接很好,但是当发送发布命令时,一两秒钟后,我在VS2017的输出窗口中得到了它:

Exception levée : 'System.Net.Sockets.SocketException' dans System.dll
Exception levée : 'System.IO.IOException' dans System.dll
Exception levée : 'System.IO.IOException' dans System.dll
Le thread 0x4a4 s'est arrêté avec le code 0 (0x0).
Exception levée : 'System.Security.Cryptography.CryptographicException' 
dans mscorlib.dll

问题是,我到处都使用过try / catch块,但是它们没有捕获那些异常。

我可以猜到这与端口转发有关,但是即使在打开watson iot所需的端口之后,我似乎也无法使命令正常工作

我可以成功地从设备发布事件并在ApplicationClient上接收这些事件,而我仅遇到Command问题。

编辑:添加说明 -我不知道使用哪个端口Exaclty,它是管理连接的IBMWIoTP,但是文档说要打开1883、80、8883和443。 我在Windows防火墙和路由器中都做到了。

  • 像这样的发布方法:

    appClient.publishCommand(“ Raspberry”,“ Pi2B”,“ pi”,“ txt”,data,0); 其中Raspberry是设备类型; Pi2B为设备ID,pi为主题,txt为格式,data为字符串,0为QoS。

  • 我正在使用IBM推荐的Nuget库:IBMWIoTP

  • 我试图在安全性方面设置TLS选项,但这不能解决问题
  • 我在connect方法上的IBMWIoTP库源代码中找到了我未捕获的异常的确切时刻:

connevtionState = mqttClient.Connect(clientId,clientUsername,clientPassword,cleanSession,keepAlivePeriod);

2 个答案:

答案 0 :(得分:0)

断开的连接可能表明您正在尝试做非法的事情,例如发布到不允许的主题。

答案 1 :(得分:0)

好吧,我发现了原因...而我感到as愧。 我影响了应用程序上的错误配置文件,我无法使用此配置文件发送命令。 我已经设置了标准的应用程序配置文件,现在一切正常。 我在此上浪费了太多时间...