そのため、サーバーに座ってクライアントからの接続を待機させようとしています。クライアントは何らかの文字列を送信し、サーバーは受信した内容に基づいて何らかのアクションを実行します。ここで、クライアントがデータを要求するコマンドを送信し、サーバーが必要なものを取得して文字列を送り返すようにしたいと考えています。
大したことではありませんよね?なんらかの理由で動作しません。ソケットを適切に閉じていないことが一番の推測です。なぜそうならないのか、何が間違っているのかわかりません。
クライアント
String data = "";
DataOutputStream outToServer = null;
BufferedReader input;
try {
outToServer = new DataOutputStream(clientSocket.getOutputStream());
outToServer.writeBytes("GETDATA");
outToServer.flush();
input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
data = input.readLine();
Log.d("ANSWER: ", data);
input.close();
} catch (IOException e) {
Log.d("Error: ", e.toString());
}
サーバ
ServerSocket listeningSocket = new ServerSocket(9008);
BufferedReader fromClient ;
PrintStream os;
while(true) {
Socket clientSocket = listeningSocket.accept();
ServerConnection clientConnection = new ServerConnection(clientSocket);
os = new PrintStream(clientSocket.getOutputStream());
fromClient= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
if(fromClient.readLine().equals("GETDATA")){
os.println("DATA");
os.flush();
clientSocket.wait();
clientSocket.close();
}
else{
clientConnection.run();
}
}
何か案は?