Java 如何向x次TCP客户端请求TCP服务器数据';s 关于我的应用程序

Java 如何向x次TCP客户端请求TCP服务器数据';s 关于我的应用程序,java,android,sockets,tcp,android-recyclerview,Java,Android,Sockets,Tcp,Android Recyclerview,在我的应用程序中,有一个TCP客户端,它在启动时要求服务器提供一个号码,目前它工作正常,但问题是我必须再次打开连接,并要求服务器发送其他数据的次数。我的意思是,我正在尝试创建一个for循环,该循环将询问服务器的X次数据,并将它们放入RecyclerView.Adapter中,但目前for循环在X次之后不停止 例子 因此,如果我正在启动我的应用程序,并且它从服务器上显示了第5个号码,我会在收到后向服务器询问第一个号码的详细信息,我会询问第二个号码的详细信息和co 这是我从MainActivity代

在我的应用程序中,有一个TCP客户端,它在启动时要求服务器提供一个号码,目前它工作正常,但问题是我必须再次打开连接,并要求服务器发送其他数据的次数。我的意思是,我正在尝试创建一个for循环,该循环将询问服务器的X次数据,并将它们放入RecyclerView.Adapter中,但目前for循环在X次之后不停止

例子 因此,如果我正在启动我的应用程序,并且它从服务器上显示了第5个号码,我会在收到后向服务器询问第一个号码的详细信息,我会询问第二个号码的详细信息和co

这是我从MainActivity代码中获得的AsyncTask,我从开始时的服务器上获得了X编号:
我想你会从学习使用/中受益

我相信(和a)将帮助你找到解决方案,他提出了一个类似问题的解决方案

如果您以前从未使用过RxJava,也许您应该从他的第一个和第二个版本开始


祝你好运

出现问题时,您是否尝试过调试
SelfNumber
实际包含的内容?如果完全错误,那么从服务器发送的数据可能就是罪魁祸首。@Voltboy实际上我发现了无限循环的问题,但idk如何修复它,问题是我在for
new ConnectTask()中调用了。execute(“”)
因此每次都会重新创建AsyncTask。
   public static class ConnectTask extends AsyncTask<String, String, Client> {

    @Override
    protected Client doInBackground(String... message) {


        client = new Client(new Client.OnMessageReceived() {
            @Override

            public void messageReceived(String message) {

                publishProgress(message);

            }
    });
        client.run();

        return null;
    }

    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);

        if(MainActivity.active){
            msgServer.setTextColor(Color.parseColor("#00FF00"));
            msgServer.setText("ONLINE");

            SelfNumber = values[0];
        }
        if(help.active){
            for(int i=0; i< Integer.valueOf(SelfNumber); i++){


            StringTokenizer stringTokenizer = new StringTokenizer(String.valueOf(values[0]),"#");
            status = stringTokenizer.nextToken();
            receipt = stringTokenizer.nextToken();
            eur = stringTokenizer.nextToken();

                help.adapter = new SelfAdapter(("CASSA SELF N°" + Integer.toString(i+1)),"EUR: " + eur,"SC: " + receipt,help.img);
                help.selfList.add(help.adapter);
                help.adapterView.notifyDataSetChanged();

                startConnection.removeCallbacks(runnableConnection);
                startConnection.postDelayed(runnableConnection,100);

                startCashMessage.removeCallbacks(runnableCashMessage);
                startCashMessage.postDelayed(runnableCashMessage,250);


            }

        }

    }
}
static Handler startConnection = new Handler();
static Runnable runnableConnection = new Runnable() {
    @Override
    public void run() {

        new ConnectTask().execute("");
    }
};

    static Handler startCashMessage = new Handler();
static Runnable runnableCashMessage = new Runnable() {
    @Override
    public void run() {
        if (help.active) {
            final Cursor cursor = myDB.fetchData();
            if (cursor.moveToFirst()) {
                do {
                    Client.SERVER_IP = cursor.getString(1);
                } while (cursor.moveToNext());
            }
            if (client != null) {
                    client.sendMessage("RICEVO DATI CASSA 1");
                }
            }
        }
};