我的應用程序正在向java套接字服務器發送數據,但它只顯示它從服務器接收的第一條消息,而不顯示其他消息。沒有從java服務器接收的Anroid套接字客戶端
- 服務器是多線程的。
- 我已經在Java中創建了兩個客戶端都通過服務器發送和接收消息,但在Android應用程序我有問題接收數據。
這是Android客戶端的完整代碼。
公共類MainActivity延伸AppCompatActivity {
Socket client;
EditText writeMsg;
TextView displayMsg;
String userInput;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
writeMsg = (EditText) findViewById(R.id.editText1);
displayMsg = (TextView) findViewById(R.id.textView);
ReceiveMsg obj = new ReceiveMsg();
Thread tr = new Thread(obj);
tr.start();
}
// A button to send msg to server when clicked
public void sendBtn(View view){
userInput = writeMsg.getText().toString();
SendMessage object = new SendMessage();
object.execute();
}
private class SendMessage extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
client = new Socket("10.0.2.2", 4444);
PrintWriter output = new PrintWriter(client.getOutputStream(), true);
output.print(userInput);
output.flush();
output.close();
client.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
class ReceiveMsg implements Runnable {
public void run() {
try {
client = new Socket("10.0.2.2", 4444);
BufferedReader in =
new BufferedReader(
new InputStreamReader(client.getInputStream()));
int i = 0;
while (i == 0) {
displayMsg.setText(in.readLine());
}
} catch (Exception e) {
}
}
}
}
我想要的應用程序,以顯示在文本視圖的新接收到的消息,並覆蓋現有消息。
謝謝大家的回答。 –