android连接mongodb数据后查询报连接引起套接字异常

1.使用java语句连接服务器上的mongodb数据库,首先连接成功,几毫秒后因出现套接字异常被断开连接

这是日志显示的 

这是 mongdb的日志

确实有连接进来的日志显示

import java.util.List;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
public class csdnconnect {


        static Mongo connection = null;
        static DB db = null;
        public void MongoDBUtil(String dbName) throws Exception
        {
            connection = new Mongo("47.114.149.208:27017");
            db = connection.getDB(dbName);
        }
        public static Mongo getConnection() {
            return connection;
        }
        public List<String> findd(String collName)
        {
            DBCollection collection = db.getCollection(collName);
            DBCursor cursor =collection.find();
            return  convertCursorToList(cursor);
        }
        private List<String> convertCursorToList(DBCursor cursor)
        {
            List<String> results = new ArrayList<String>();
            while(cursor.hasNext())
            {
                DBObject dbObject = cursor.next();

                for(String key : dbObject.keySet())
                {
                    results.add("{"+key+":"+dbObject.get(key)+"}");
                }
            }

            return results;
        }
}

 

这是 连接mongodb数据库的代码 包括连接和查询

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.view.View;
import java.util.List;

public class MainActivity extends AppCompatActivity  {
    private SensorManager sm;
    private Sensor mysensor;
    private StringBuffer sb = new StringBuffer();
    private csdnconnect db = new csdnconnect();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("wudi1");
        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        try {
            db.MongoDBUtil("mycol");
            System.out.println("wudi2");
            db.getConnection();
            List<String> cursor=db.findd("mycol");
            System.out.println("wudi3");
            System.out.println(cursor);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

 这是安卓代码mainactivity部分,数据库相关的只有try catch里面的内容,其实“wudi3”和cursor并没有输出

 

希望有大佬能帮我看看问题出在哪里

socket连接网络异常,引起数据库中断。除了数据库操作,还有其他socket操作吗?

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.view.View;
import java.util.List;

public class MainActivity extends AppCompatActivity  {
    private SensorManager sm;
    private Sensor mysensor;
    private StringBuffer sb = new StringBuffer();
    private csdnconnect db = new csdnconnect();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("wudi1");
        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        try {
            db.MongoDBUtil("mycol");
            System.out.println("wudi2");
            db.getConnection();
            List<String> cursor=db.findd("mycol");
            System.out.println("wudi3");
            System.out.println(cursor);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void start(View view){
        mysensor = sm.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
        System.out.println("mysensor"+mysensor);
        sm.registerListener(new MySensorListener(),
                mysensor, SensorManager.SENSOR_DELAY_NORMAL);
    }
}
class MySensorListener implements SensorEventListener{

    @Override
    public void onSensorChanged(SensorEvent event) {

        float a = event.values[0];
        float a1 = event.values[1];
        float a2 = event.values[2];
        System.out.println(a+","+a1+","+a2+"[accrucy]:"+event.accuracy);
        System.out.println();
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y