Кажется, что когда я использую метод accept из класса Socket, вся программа зависает, пока не поступят данные. Я передал сокет потоку, и он не зависает, но мне нужен поток, чтобы вернуть данные обратно, что я не думаю, что это может сделать.
Код для получения имени пользователя
public boolean checkUsername() {
NetworkIO n = new NetworkIO();
// Grabs username from edittext field
username = usernameEditText.getText().toString();
System.out.println(usernameEditText.getText().toString());
// queries databse for username
try {
resultFromServer = n.query("username",
"select username FROM user_info WHERE MATCH (username) AGAINST ('"
+ username + "' IN NATURAL LANGUAGE MODE);");
} catch (IOException e) {
e.printStackTrace();
}
}
Код для класса NetworkIO
public class NetworkIO extends Activity {
Socket networkSocket = null;
PrintWriter out = null;
BufferedReader in = null;
public String query(String request, String fieldRequested)
throws IOException {
// Tries to get connection
try {
networkSocket = new Socket("192.168.1.8", 9009);
out = new PrintWriter(networkSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
networkSocket.getInputStream()));
System.out.println("Hi from in made");
} catch (UnknownHostException e) {
System.err.println("Unknown host");
System.exit(-1);
} catch (IOException e) {
System.err.println("IOException");
System.exit(-1);
}
//Sends Request
out.println(request);
out.println(fieldRequested);
String resultFromServer = "";
//Waits for response and if its null exit
while ((in.readLine()) != null) {
resultFromServer += in.readLine();
}
System.out.println(resultFromServer);
//Close the connections
out.close();
in.close();
networkSocket.close();
return resultFromServer;
}
}
Любая критика моего кода будет высоко оценена:)