gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:50:34 26 4
gpt4 key购买 nike

关于我的应用

在我的应用程序中有一个 TCP 客户端 在开始时它向服务器询问一个号码,现在它工作正常但问题是当我必须再次打开连接并询问 numberserver 之前发送的其他数据。我的意思是我正在尝试创建一个 for 循环,它将向服务器请求 X 次数据并将它们放入 RecyclerView.Adapter 但现在 For Cycle 进入无限循环而不会在 < strong>X 次。

例子

因此,如果我启动我的应用程序并且它从服务器接收到数字 5,我将在收到它后向服务器询问第一个数字的详细信息,我将要求第二个数字的详细信息和合作。

这是我在 MainActivity 代码中的 AsyncTask,我在开始时从服务器获取了 X 编号:

   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");
}
}
}
};

最佳答案

我认为你会从学习使用中受益 RxJava/RxAndroid .

我相信this presentation (和 video link )将帮助您找到解决方案,他提出了类似问题的解决方案。

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

祝你好运!

关于java - 如何向 x 次 TCP 客户端请求 TCP 服务器数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45320906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com