Java 如何向x次TCP客户端请求TCP服务器数据';s 关于我的应用程序
在我的应用程序中,有一个TCP客户端,它在启动时要求服务器提供一个号码,目前它工作正常,但问题是我必须再次打开连接,并要求服务器发送其他数据的次数。我的意思是,我正在尝试创建一个for循环,该循环将询问服务器的X次数据,并将它们放入RecyclerView.Adapter中,但目前for循环在X次之后不停止 例子 因此,如果我正在启动我的应用程序,并且它从服务器上显示了第5个号码,我会在收到后向服务器询问第一个号码的详细信息,我会询问第二个号码的详细信息和co 这是我从MainActivity代码中获得的AsyncTask,我从开始时的服务器上获得了X编号: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代
我想你会从学习使用/中受益 我相信(和a)将帮助你找到解决方案,他提出了一个类似问题的解决方案 如果您以前从未使用过RxJava,也许您应该从他的第一个和第二个版本开始
祝你好运 出现问题时,您是否尝试过调试
SelfNumber
实际包含的内容?如果完全错误,那么从服务器发送的数据可能就是罪魁祸首。@Voltboy实际上我发现了无限循环的问题,但idk如何修复它,问题是我在fornew 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");
}
}
}
};