java.net.ConnectException when requesting a URL through socket programming

I am practicing socket programming code as it is from the book "Java Complete reference To Oracle". So you understand that I am a new learner of Java. 

On execution of the code as-in, I am getting a whole list of exceptions, while using Eclipse IDE. I am terribly confused about what I did wrong. Any help would be appreciated.

import java.net.*;
import java.io.*;

public class Whois {
public static void main(String[] args)throws Exception{
    int c;

    Socket s = new Socket("whois.internic.net",43);

    InputStream in = s.getInputStream();
    OutputStream out = s.getOutputStream();

    String str = (args.length == 0 ? "OraclePressBooks.com" : args[0]) + "\n";
    byte buf[] = str.getBytes();


    out.write(buf);


    while((c=in.read())!=-1)
    {
        System.out.println((char)c);
    }
    s.close();
}
}

Exception

Exception in thread "main" java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at Whois.main(Whois.java:8)