Question: When I'm trying to set up a socket server, I've got an error message:

```
Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
    at java.net.ServerSocket.bind(ServerSocket.java:328)
    at java.net.ServerSocket.<init>(ServerSocket.java:194)
    at java.net.ServerSocket.<init>(ServerSocket.java:106)
    at socketyserver.SocketyServer.main(SocketyServer.java:12)
Java Result: 1

```

Whole code is simplest as it can be:

```
public static void main(String[] args) throws UnknownHostException, IOException
{
    ServerSocket serverSocket;
    serverSocket = new ServerSocket(9999);
}

```

I'm 100% sure that my ports are forwarded, Windows Firewall is off. Nothing blocks port 9999. What else can go wrong?

Answer: 
Java documentation for `java.net.BindExcpetion`,

> 
> Signals that an error occurred while attempting to bind a socket to a
>  local address and port. Typically, the **port is in use**, or the
>  **requested local address could not be assigned**.
> 
> 
> 

Cause:

The error is due to the second condition mentioned above. When you start a server(Tomcat,Jetty etc) it listens to a port and bind a socket to an address and port. In Windows and Linux the hostname is resolved to IP address from `/etc/hosts` This host to IP address mapping file can be found at `C:\Windows\System32\Drivers\etc\hosts`. If this mapping is changed and the host name cannot be resolved to the IP address you get the error message.

Solution:

Edit the hosts file and correct the mapping for hostname and IP using admin privileges.

eg:

```
#127.0.0.1 localhost
192.168.52.1 localhost

```

Read more: [java.net.BindException : cannot assign requested address.](http://javarevisited.blogspot.in/2014/02/fixing-javanetbindexception-cannot-assign-requested-address-JVMbind.html)
I came across this error when copying configurations from one server to another.

I had the old host's hostname in my **${JETTY\_BASE}/start.ini jetty.host** property. Setting the correct jetty.host property value solved the issue for me.

Hope this helps someone in the future who has to work on multiple servers at once.