c# MQTT Client

Gast #5355659
Lesenswert?
• ▲
▼
Vielleicht kann mir jemand helfen...

Mit dem Programm verbinde ich mich mit einem MQTTBroker.
Solange der richtige BenutzerName und das Passwort benutzt werden ist 
alles in Ordnung.
Wenn ich so wie hier einen falschen Benutzernamen und ein falsches 
Passwort verwende, wird der Prozess beim Schließen des Programms nicht 
beendet.

Woran liegt das und wie kann man das beheben?

public Form1()
{
  InitializeComponent();

  try
  {
    mClient = new MqttClient("starDeko");
    mClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
    clientId = Guid.NewGuid().ToString();
    byte x = mClient.Connect(clientId,"user2","passwd1",false,3);
    if (!mClient.IsConnected)
    {
     textBox1.Text += x.ToString() + " nicht verbunden !!!\n";
     mClient.Disconnect();
    }
   }
   catch(Exception)
   {}
  }
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    if (mClient != null)
       if (mClient.IsConnected)
          mClient.Disconnect();
}
Gast #5358023
Lesenswert?
• ▲
▼
Holger74 schrieb:
> MQTT-Client in C#

Dein Code sieht verdammt nach dem Paho MQTT Client für C# (M2Mqtt) aus.
Nein, leider keine praktische Erfahrung damit. Paho MQTT Client für C 
und Paho MQTT für JS habe ich schon benutzt.

Was mir bei kurzem drauf schauen auf die Paho C# Webseiten[1] auffällt 
ist, dass es zwar die gleichen kurzen Pseudo-Code Schnipsel gibt wie für 
Paho C, aber nicht die passend kurzen Code Beispiele.
Hab ich die einfachen Beispiele übersehen? (Beim Paho C im Ordner: 
./paho.mqtt.c/src/samples/ MQTTClient_publish.c + 
MQTTClient_subscribe.c)

[1]
https://www.eclipse.org/paho/clients/dotnet/
https://github.com/eclipse/paho.mqtt.m2mqtt/tree/master/M2Mqtt
https://m2mqtt.wordpress.com/using-mqttclient/


Einfach mal kurz geraten.

  > catch(Exception)

Bis du sicher, dass sich die Exceptions nicht in die Quere kommen? In 
der Implementierung von mClient.Connect() selbst wird die Exception 
MqttConnectionException(...) geworfen.


  > client_MqttMsgPublishReceived

Eine passende Methode hast du hoffentlich auch implementiert?
void client_MqttMsgPublished(object sender, MqttMsgPublishedEventArgs e) 
{ /*your code here*/}
Gast #5362150
Lesenswert?
• ▲
▼
Vielen Dank für Eure Hilfe.
Ich komme trotzdem nicht weiter. Das try/catch ist entfernt und eine 
client_MqttMsgPublished(...) existiert auch. Connect gibt den richtigen 
Fehlercode ("bad username...") zurück. Das Form läßt sich schließen, nur 
der Prozess bleibt noch vorhanden. Das gleiche passiert auch bei einem 
connect ohne username und password. Ich habe auch noch kein Beispiel 
gesehen, wo der Erfolg von connect abgefragt wird und was passiert, wenn 
das connect fehlschlägt.
Wo kann man den Fehler noch suchen?

Wie sieht ein richtiger Dispose für das Objekt aus?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.