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?
For me it was because a previous jmeter.properties change was still in play
if you happened on CentOS?
You should try to this.
$ service network restart
or
reboot your server.
It may be related to a misconfiguration in your
/etc/hosts
. In my case, it was like this:192.168.1.11 localhost
instead of127.0.0.1 localhost
if your are using server, there's "public network IP" and "internal network IP". Use the "internal network IP" in your file /etc/hosts and "public network IP" in your code. if you use "public network IP" in your file /etc/hosts then you will get this error.
Java documentation for
java.net.BindExcpetion
,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 atC:\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:
Read more: java.net.BindException : cannot assign requested address.
In my case, delete from /etc/hosts