Reputation: 739
i have this doInBackground() method in my AsyncTask:
protected String doInBackground(String... params) {
try {
if(!client.isConnected()){
client = new Socket("192.168.1.2", 4444);
}
//client = new Socket("192.168.1.2", 4444);
oos = new ObjectOutputStream(client.getOutputStream());
ois = new ObjectInputStream(client.getInputStream());
oos.writeUTF("LOGIN");
oos.flush();
String emailText = email.getText().toString();
oos.writeUTF(emailText);
oos.flush();
String passwordText = password.getText().toString();
oos.writeUTF(passwordText);
oos.flush();
string = ois.readUTF();
}catch (ConnectException e){
return "Host not found";
}catch (IOException e) {
return "Exception Caught";
}
return null;
}
but when my app execute this method i get this error:
06-06 11:29:29.224: E/AndroidRuntime(9071): FATAL EXCEPTION: AsyncTask #1
06-06 11:29:29.224: E/AndroidRuntime(9071): java.lang.RuntimeException: An error occured while executing doInBackground()
06-06 11:29:29.224: E/AndroidRuntime(9071): at android.os.AsyncTask$3.done(AsyncTask.java:299)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
06-06 11:29:29.224: E/AndroidRuntime(9071): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.lang.Thread.run(Thread.java:841)
06-06 11:29:29.224: E/AndroidRuntime(9071): Caused by: java.lang.NullPointerException
06-06 11:29:29.224: E/AndroidRuntime(9071): at com.example.social_network.Login$myTask.doInBackground(Login.java:50)
06-06 11:29:29.224: E/AndroidRuntime(9071): at com.example.social_network.Login$myTask.doInBackground(Login.java:1)
06-06 11:29:29.224: E/AndroidRuntime(9071): at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-06 11:29:29.224: E/AndroidRuntime(9071): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
06-06 11:29:29.224: E/AndroidRuntime(9071): ... 4 more
and app crash. Server doesn't receive client connection What's wrong?
Upvotes: 0
Views: 73
Reputation: 2870
Try to check if the socket is connected before create it again:
try {
if(client == null) client = new Socket("192.168.1.2", 4444);
else if(!client.isConnected())
client = new Socket("192.168.1.2", 4444); //connect to server
}
...
And be sure that your socket doesn't have a small timeout.
Upvotes: 2