无法使用Paho android客户端连接到test.蚊子.org

无法使用Paho android客户端连接到test.蚊子.org,android,Android,由于我对Paho的Android客户端库(Client library())还不熟悉,因此我将遵循Paho开发人员的一些示例来学习如何应用它。我已经完成了所有步骤,但在使用tcp://test.mosqitto.org:1883,它总是让我无法连接到服务器,即使一切正常 下面是来自的部分代码 导入android.os.Bundle; 导入android.support.design.widget.FloatingActionButton; 导入android.support.design.wid

由于我对Paho的Android客户端库(Client library())还不熟悉,因此我将遵循Paho开发人员的一些示例来学习如何应用它。我已经完成了所有步骤,但在使用
tcp://test.mosqitto.org:1883
,它总是让我无法连接到服务器,即使一切正常

下面是来自的部分代码

导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.Toolbar;
导入android.view.view;
导入android.view.Menu;
导入android.view.MenuItem;
导入org.eclipse.paho.android.service.MqttAndroidClient;
导入org.eclipse.paho.client.mqttv3.DisconnectedBufferOptions;
导入org.eclipse.paho.client.mqttv3.IMqttActionListener;
导入org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
导入org.eclipse.paho.client.mqttv3.IMqttMessageListener;
导入org.eclipse.paho.client.mqttv3.imqttoken;
导入org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
导入org.eclipse.paho.client.mqttv3.MqttConnectOptions;
导入org.eclipse.paho.client.mqttv3.MqttException;
导入org.eclipse.paho.client.mqttv3.MqttMessage;
导入java.util.ArrayList;
公共类PahoExampleActivity扩展了AppCompatActivity{
私人回收视图mRecyclerView;
私人历史适配器;
private RecyclerView.LayoutManager MLLayoutManager;
MqttAndroidClient MqttAndroidClient;
最后一个字符串serverUri=”tcp://test.mosqitto.org:1883";
最终字符串clientId=“”;
最终字符串subscriptionTopic=“dannies”;
最终字符串publishTopic=“dannies”;
最后一个字符串publishMessage=“你好,世界!”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u滚动);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
publishMessage();
}
});
mRecyclerView=(RecyclerView)findViewById(R.id.history\u recycler\u view);
mLayoutManager=新的LinearLayoutManager(此);
mRecyclerView.setLayoutManager(mllayoutmanager);
mAdapter=newhistoryadapter(newarraylist());
mRecyclerView.setAdapter(mAdapter);
mqttAndroidClient=新的mqttAndroidClient(getApplicationContext(),serverUri,clientId);
mqttAndroidClient.setCallback(新的MqttCallbackExtended(){
@凌驾
public void connectComplete(布尔重新连接,字符串serverURI){
如果(重新连接){
addToHistory(“重新连接到:“+serverURI”);
//因为Clean会话是真的,所以我们需要重新订阅
下标对位();
}否则{
addToHistory(“连接到:“+serverURI”);
}
}
@凌驾
公共无效连接丢失(可丢弃原因){
addToHistory(“连接丢失”);
}
@凌驾
public void messageArrived(字符串主题,MqttMessage消息)引发异常{
addToHistory(“传入消息:+新字符串(message.getPayload()));
}
@凌驾
公共无效交付完成(IMQTTDDeliveryToken代币){
}
});
MqttConnectOptions MqttConnectOptions=新MqttConnectOptions();
mqttConnectOptions.setAutomaticReconnect(true);
mqttConnectOptions.setCleanSession(false);
试一试{
//addToHistory(“连接到”+serverUri);
mqttAndroidClient.connect(mqttConnectOptions,null,新的imqttactActionListener(){
@凌驾
成功时公共无效(IMqttToken asyncActionToken){
DisconnectedBufferOptions DisconnectedBufferOptions=新DisconnectedBufferOptions();
disconnectedBufferOptions.setBufferEnabled(true);
disconnectedBufferOptions.setBufferSize(100);
disconnectedBufferOptions.setPersistBuffer(false);
disconnectedBufferOptions.SetDeleteOldTestMessages(false);
//mqttAndroidClient.setBufferOpts(disconnectedBufferOptions);
下标对位();
}
@凌驾
public void onFailure(IMqttToken asyncActionToken,可丢弃异常){
addToHistory(“未能连接到:“+serverUri”);
}
});
}捕获(MqttException-ex){
例如printStackTrace();
}
}
私有void addToHistory(字符串mainText){
System.out.println(“日志:+mainText”);
mAdapter.add(主文本);
Snackbar.make(findviewbyd(android.R.id.content)、mainText、Snackbar.LENGTH\u LONG)
.setAction(“Action”,null).show();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
返回super.onOptionsItemSelected(项目);
}
公共无效订阅主题(){
试一试{
mqttAndroidClient.subscribe(subscriptionTopic,0,null,新的imqttactActionListener(){
@凌驾
成功时公共无效(IMqttToken asyncActionToken){
addToHistory(“订阅”);
}
@凌驾
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import org.eclipse.paho.android.service.MqttAndroidClient;
    import org.eclipse.paho.client.mqttv3.DisconnectedBufferOptions;
    import org.eclipse.paho.client.mqttv3.IMqttActionListener;
    import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
    import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
    import org.eclipse.paho.client.mqttv3.IMqttToken;
    import org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
    import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
    import org.eclipse.paho.client.mqttv3.MqttException;
    import org.eclipse.paho.client.mqttv3.MqttMessage;

    import java.util.ArrayList;

public class PahoExampleActivity extends AppCompatActivity{
private RecyclerView mRecyclerView;
private HistoryAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;

MqttAndroidClient mqttAndroidClient;

final String serverUri = "tcp://test.mosqitto.org:1883";

final String clientId = "";
final String subscriptionTopic = "dannies";
final String publishTopic = "dannies";
final String publishMessage = "Hello World!";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scrolling);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            publishMessage();
        }
    });

    mRecyclerView = (RecyclerView) findViewById(R.id.history_recycler_view);
    mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);

    mAdapter = new HistoryAdapter(new ArrayList<String>());
    mRecyclerView.setAdapter(mAdapter);

    mqttAndroidClient = new MqttAndroidClient(getApplicationContext(), serverUri, clientId);
    mqttAndroidClient.setCallback(new MqttCallbackExtended() {
        @Override
        public void connectComplete(boolean reconnect, String serverURI) {

            if (reconnect) {
                addToHistory("Reconnected to : " + serverURI);
                // Because Clean Session is true, we need to re-subscribe
                subscribeToTopic();
            } else {
                addToHistory("Connected to: " + serverURI);
            }
        }

        @Override
        public void connectionLost(Throwable cause) {
            addToHistory("The Connection was lost.");
        }

        @Override
        public void messageArrived(String topic, MqttMessage message) throws Exception {
            addToHistory("Incoming message: " + new String(message.getPayload()));
        }

        @Override
        public void deliveryComplete(IMqttDeliveryToken token) {

        }
    });

    MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
    mqttConnectOptions.setAutomaticReconnect(true);
    mqttConnectOptions.setCleanSession(false);

    try {
        //addToHistory("Connecting to " + serverUri);
        mqttAndroidClient.connect(mqttConnectOptions, null, new IMqttActionListener() {
            @Override
            public void onSuccess(IMqttToken asyncActionToken) {
                DisconnectedBufferOptions disconnectedBufferOptions = new DisconnectedBufferOptions();
                disconnectedBufferOptions.setBufferEnabled(true);
                disconnectedBufferOptions.setBufferSize(100);
                disconnectedBufferOptions.setPersistBuffer(false);
                disconnectedBufferOptions.setDeleteOldestMessages(false);
               // mqttAndroidClient.setBufferOpts(disconnectedBufferOptions);
                subscribeToTopic();
            }

            @Override
            public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                addToHistory("Failed to connect to: " + serverUri);
            }
        });
    } catch (MqttException ex){
        ex.printStackTrace();
    }
}

private void addToHistory(String mainText){
    System.out.println("LOG: " + mainText);
    mAdapter.add(mainText);
    Snackbar.make(findViewById(android.R.id.content), mainText, Snackbar.LENGTH_LONG)
            .setAction("Action", null).show();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement

    return super.onOptionsItemSelected(item);
}

public void subscribeToTopic(){
    try {
        mqttAndroidClient.subscribe(subscriptionTopic, 0, null, new IMqttActionListener() {
            @Override
            public void onSuccess(IMqttToken asyncActionToken) {
                addToHistory("Subscribed!");
            }

            @Override
            public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                addToHistory("Failed to subscribe");
            }
        });
    } catch (MqttException ex){
        System.err.println("Exception whilst subscribing");
        ex.printStackTrace();
    }
}

public void publishMessage(){

    try {
        MqttMessage message = new MqttMessage();
        message.setPayload(publishMessage.getBytes());
        mqttAndroidClient.publish(publishTopic, message);
        addToHistory("Message Published");
        if(!mqttAndroidClient.isConnected()){
            addToHistory(" messages in buffer.");
        }
    } catch (MqttException e) {
        System.err.println("Error Publishing: " + e.getMessage());
        e.printStackTrace();
    }
}}