代码之家  ›  专栏  ›  技术社区  ›  John K

如何向x次TCP客户端请求TCP服务器数据?

  •  1
  • John K  · 技术社区  · 8 年前

    在我的应用程序中有一个 TCP客户端 在开始时,它向服务器请求一个 ,目前它工作正常,但问题是当我必须再次打开连接并询问时 数字 之前已发送以获取其他数据。我的意思是我在试着做一个循环 乘以服务器上的数据,并将其放入RecyclerView。适配器,但目前for循环在无限循环中进行,之后不停止 十、

    实例

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

    十、

       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");
                    }
                }
            }
    };
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Ariel Yust    8 年前

    RxJava / RxAndroid .

    我相信 this presentation (和a video link

    如果你以前从未使用过RxJava,也许你应该从他的第一个开始 presentation video .

    祝你好运