Before answering, please note that this is a client side issue and not a server issue. Since I used telnet in the terminal, to connect to the server, and telnet was able to connect to the server. Now, I do not know why the connect method cannot connect I used both the localhost address and the private IP address of the server. It just blocks and it never invokes the callback method.
client.connect(new InetSocketAddress(hostname, 1993));
callback.onConnection(); // Never invokes!
OutputStream writer = client.getOutputStream();
InputStream reader = client.getInputStream();
byte[] buffer = new byte[1024 * 1024];
P.S Am I doing something wrong. It cannot be firewall issue since telnet was able to connect to the server and I think I do not have a firewall since I am running this code in my Ubuntu machine. Both the server and client are using the TCP protocol and no exception is being thrown neither on the client and server side. Any suggestion to what might be wrong can be very useful. I can show more code like the sever code. The server is written in C++ and the client is written in Java.
Edit:
I finally was able to establish a connection. Instead of using the connect method I interally called connect by using the constructor of the socket. I do not know why connect doesnt' work?
Here is the code modification:
client = new Socket(hostname, port);
callback.onConnection();
OutputStream writer = client.getOutputStream();
InputStream reader = client.getInputStream();
byte[] buffer = new byte[1024 * 1024];
reader.read(buffer);