Androidデバイスでソケットサーバーを実行しています。次に、クライアントからサーバーに文字列を送信すると、サーバーは同じものを返します(エコーサーバー)。私がやろうとしているのは、私が送信したものだけでなく、他の文字列も取得することです。サーバーコードは次のとおりです。
boolean finished = false;
try {
DataInputStream in = new DataInputStream(client.getInputStream());
PrintStream out = new PrintStream(client.getOutputStream());
// Print a message:
System.out.println("Client from : " + client.getInetAddress() + " port " + client.getPort());
// now get the input from the socket...
while(!finished) {
String st = in.readLine();
// Send the same back to client
if (st.equals("hello")) {
cur = dbHelper.getRandomQuestion();
String question = cur.getString(cur.getColumnIndex("QUESTIONS"));
String answer1 = cur.getString(cur.getColumnIndex("ANSWER1"));
String answer2 = cur.getString(cur.getColumnIndex("ANSWER2"));
String answer3 = cur.getString(cur.getColumnIndex("ANSWER3"));
String answer4 = cur.getString(cur.getColumnIndex("ANSWER4"));
out.println(question);
}
out.println(st);
クライアントコードは次のとおりです。
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
Log.d("ClientActivity", "C: SENDING...");
Socket socket = new Socket(serverAddr, 5000);
System.out.println("Connected to " + socket.getInetAddress() + ":" + socket.getPort());
connected = true;
while(connected) {
try {
BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
PrintStream out = new PrintStream(socket.getOutputStream());
out.println(data.getText());
line = in.readLine(); // read server
System.out.println("Echo: " + line);
handler.post(updateUI); // here i change a textview to show the echoed string
in.close(); // Close stream
out.close();
} catch (Exception e) {
Log.e("ClientActivity", "S: Error", e);
}
connected = false;
}
answer1,answer2,asnwer3,answer4 も返したいです。どうすればそれができますか?