I have 2 buttons btn_openport and btn_closeport with below code: btn_openport opens the socket and allows for new connection : is working fine btn_closeport calls the below method in background in asynctask:
private static class closePort extends AsyncTask {
@Override
protected Object doInBackground(Object[] objects) {
Boolean closestatus = new OpenClosePort(port).closePort();
......rest of code
}
class openclose {
private Socket socket = null;
private ServerSocket server = null;
private static final String TAG = "ports";
private int port;
void openPort() {
try {
server = new ServerSocket(port);
socket = server.accept();
} catch () {
}
..........
}
Boolean closePort() {
Log.e(TAG + "/closePort", ">>> Closing Port : " + this.port);
try {
socket.close();
return true;
} catch (Exception e) {
Log.e(TAG + "/closePort", "Error closing port: ", e);
return false;
}
}
}
However, when this code for closing port is executed, I am getting NullPointerException, although the client is connected on the socket.
How can I fix this?
Error::
11-05 12:06:35.938 533-533/com.app.fi E/MyActivity/closePort: >>> Closing Port : 5556
11-05 12:06:35.941 533-533/com.app.fi E/MyActivity/closePort: Error closing port:
11-05 14:18:55.102 7460-8810/com.app.fi E/MyActivity/closePort: >>> Closing Port : 5556
11-05 14:18:55.104 7460-8810/com.app.fi E/MyActivity/closePort: Error closing port:
java.lang.NullPointerException: Attempt to invoke virtual method 'void java.net.Socket.close()' on a null object reference
at com.app.fi.OpenClosePort.closePort(OpenClosePort.java:54)
at com.app.fi.MainActivity$closePort.doInBackground(MainActivity.java:83)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
11-05 14:18:55.109 7460-8810/com.app.fi W/checkPortStatus: Printing Socket value : Socket[address=localhost/127.0.0.1,port=5556,localPort=45524]