私はAndroidアプリケーションを開発しています。
単純なエコー クライアントを使用して、Android で非同期ソケットがどのように機能するかをテストしたいと考えています。
Javaチュートリアルで、次のコードを見つけました:
import java.io.*;
import java.net.*;
public class EchoClient {
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("taranis", 7);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: taranis.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
フォームを読む代わりに、System.in
ユーザーに EditText を入力させ、ユーザーがボタンをタップしたときに、その EditText でユーザーが導入したテキストを送信したいと考えています。
また、AsyncTask を使用して作成したいと考えています。上記のコードは onAsyncTask.doBackground()
メソッドになります。
私は次のことをしたい: ユーザーがテキストを紹介し、送信ボタンをタップしてから、応答が表示されるのを待ちます。Echo Server から応答を受け取ったら、ユーザーに新しいテキストを導入させ、プロセスを最初からやり直します。ソケットを閉じてプログラムを終了する別のボタンがあります。
私の問題は、送信できるテキストがあることをどのように通知できますか? つまり、ユーザーが送信ボタンをタップしたときに、そのテキストを AsyncTask に渡すにはどうすればよいでしょうか?