eclipse paho 创建MQTTASYNForticlientt有数量限制吗

前一篇博客() 写了一些MQTT协议相關的一些概述和其实现Eclipse Paho的报文类别同时对心跳包进行了分析。这篇文章在不涉及MQTT逻辑实现的基础之上分析一下Eclipse Paho中Socket通信的实现,这里我們主要阐述其采用Java同步技术将同步的Socket通信异步化的过程

总 的过程如下:send方法将消息放入到pendingMessages队列和pendingFlows当中同时发送消息唤醒等待中的线程,get等待 pendingMessages队列和pendingFlows中的消息同时等待唤醒,如果有消息放入同时被唤醒,那么就执行发送消息的操作这个过 程是不是跟操作系统当中的生產者-消费者的关系一样呢!!!

  1. 这里,因为socket.getInputStream()一直在阻塞如果没有消息是读不到message的,因此在这里的while循环也没有无限制 的运行下去只有在囿消息的时候才往下走。socket默认是阻塞的就是在读的时候如果读不到资源就会一直等待,直到超时(如果设置了超时时间的话) 如果服務端和客户端都在读的话而没有写的话就会一直阻塞。你可以使用SocketChannel设置socket的通道,使其变成非阻塞的  

我要回帖

更多关于 client 的文章

 

随机推荐