2015-09-26 62 views
1

在我当前的.NET项目中,我希望通过MQTT向代理发布消息,但我尝试了几种方法来实现此操作,但它们都不起作用。我想用M2MqttPaho Link),但我也试过MqttDotNet没有成功。M2Mqtt库没有发布消息,线程退出代码259

我目前解决这个问题的方法是让最简单的可能的实现工作,但即使这个不起作用。我只是创建一个MqttClient实例,连接到代理(调试通过'IsConnected'显示我的工作),然后发布消息(简单字符串'Local:0:user:dev')。尽管如此,我的经纪人从未收到这条消息,我从VisualStudio获得的唯一反应是这4行:

Der Thread 0x13a8 hat mit代码259(0x103)geendet。 Der Thread 0x16d4 hat mit Code 259(0x103)geendet。 Der线程0x1ab0帽子代码259(0x103)geendet。 Der Thread 0xa48 hat mit Code 259(0x103)geendet。

此消息是德语,它与提到的线程退出消息here相同。

我使用此代码来连接,发布和断开连接,并且我已经尝试了没有“断开”部分的相同代码。

MqttClient client = new MqttClient("127.0.0.1"); 
client.Connect("client"); 
client.Publish("cdj/new", Encoding.UTF8.GetBytes(message)); 
client.Disconnect(); 

只是为了确保,在经纪人的工作,它可以准确地接收通过泛美卫生组织MQTT工具发送相同的消息。我使用.NET 4.0和M2Mqtt 4.0版(因为最新版本是针对.NET 4.5的)。

我不知道我应该做什么不同,特别是因为没有任何exeption或错误消息指出哪里出了问题。

+0

我不熟悉.net代码,但是有onConnected回调吗?如果这样的话,将发布和断开呼叫移到onConnected回调中。您可能在连接完成之前尝试发送 – hardillb

+0

没有onConnected回调,缺少的连接不是问题,但它看起来像我(通过'Disconnect')或GC在发布操作期间关闭套接字。现在我尽可能长时间地保持连接以发送多条消息,无论如何,这应该是更好的练习;) –

回答

1

看起来好像是我通过代码或GC在发布操作期间关闭了网络套接字,所以现在我的解决方案是尽可能长地连接到代理以发送多个消息及其工作。

作为发布操作完成后关闭套接字的解决方案,我建议使用MqttMsgPublished事件来断开客户端连接。

相关问题