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?
jww
96.7k90 gold badges407 silver badges878 bronze badges
asked Jan 22, 2012 at 22:05
Adrian AdamczykAdrian Adamczyk
2,9705 gold badges25 silver badges41 bronze badges
3
It may be related to a misconfiguration in your /etc/hosts
.
In my case, it was like this:
192.168.1.11 localhost
instead of 127.0.0.1 localhost
answered Oct 31, 2012 at 14:04
Oueslati BechirOueslati Bechir
9522 gold badges10 silver badges15 bronze badges
2
As other people have pointed out, it is most likely related to another process using port 9999
. On Windows, run the command:
netstat -a -n | grep "LIST"
And it should list anything there that’s hogging the port. Of course you’ll then have to go and manually kill those programs in Task Manager. If this still doesn’t work, replace the line:
serverSocket = new ServerSocket(9999);
With:
InetAddress locIP = InetAddress.getByName("192.168.1.20");
serverSocket = new ServerSocket(9999, 0, locIP);
Of course replace 192.168.1.20
with your actual IP address, or use 127.0.0.1
.
answered Jan 22, 2012 at 22:12
Marvin PintoMarvin Pinto
29.9k7 gold badges37 silver badges54 bronze badges
9
Just for others who may look at this answer in the hope of solving a similar problem, I got a similar message because my ip address changed.
java.net.BindException: Cannot assign requested address: bind
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:182)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:311)
at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:260)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.server.Server.doStart(Server.java:273)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
answered Aug 2, 2013 at 2:04
3
The error says Cannot assign requested address
. This means that you need to use the correct address for one of your network interfaces or 0.0.0.0
to accept connections from all interfaces.
The other solutions about ports only work after sometimes-failing black magic (like working after some computer restarts but not others) because the port is completely irrelevant.
answered Oct 10, 2013 at 16:13
OlatheOlathe
1,8851 gold badge15 silver badges23 bronze badges
0
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:WindowsSystem32Driversetchosts
. 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.
answered Jul 9, 2015 at 12:36
LuckyLucky
16.7k19 gold badges117 silver badges151 bronze badges
4
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.
answered Jan 4, 2017 at 2:29
Nick QianNick Qian
731 silver badge4 bronze badges
0
For me it was because a previous jmeter.properties change was still in play
httpclient.localaddress=12.34.56.78
answered Aug 14, 2013 at 23:07
Kevin ReillyKevin Reilly
6,0762 gold badges24 silver badges18 bronze badges
In my case:
Just restarted my computer and everything works fine after that.
answered Aug 11, 2021 at 23:27
Sos.Sos.
90810 silver badges14 bronze badges
In my case, delete from /etc/hosts
- 127.0.0.1 localhost
- 192.168.100.20 localhost <<<<—- (delete or comment)
answered Mar 30, 2016 at 13:52
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.
answered May 16, 2016 at 20:16
if you happened on CentOS?
You should try to this.
$ service network restart
or
reboot your server.
answered Aug 23, 2016 at 1:24
seyeonseyeon
4,0222 gold badges15 silver badges12 bronze badges
My laptop has an internal DNS name in the network, it was fine until something and then has broken.
To fix i added a line to route all requests by DNS name to my 127.0.0.1, my /etc/hosts
looks like this:
127.0.0.1 localhost
127.0.0.1 host.docker.internal
127.0.0.1 my-url.box #added for the problem
Might be relevant for someone.
It is easy to debug, just run a class until this is green:
public static void main(String[] args) throws Exception {
new ServerSocket(0, 1, InetAddress.getLocalHost());
}
answered Jun 15, 2021 at 15:24
The port is taken by another process. Possibly an unterminated older run of your program. Make sure your program has exited cleanly or kill it.
answered Jan 22, 2012 at 22:07
BozhoBozho
586k144 gold badges1057 silver badges1137 bronze badges
2
java.net.BindException: Cannot assign requested address
According to BindException
documentation, it basically:
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.
So try the following command:
sudo lsof -i:8983
to double check if any application is using the same port and kill it.
If that’s not the case, make sure that your IP address to which you’re trying to bind is correct (it’s correctly assigned to your network interface).
answered Apr 6, 2015 at 21:11
kenorbkenorb
153k86 gold badges674 silver badges738 bronze badges
2
When I used
InetAddress addr = InetAddress.getByName("192.168.1.104");
listen_socket = new ServerSocket(port,5,addr);
then it works fine
But when use dynamic ip
InetAddress addr = InetAddress.getByName("114.143.95.69");
listen_socket = new ServerSocket(port,5,addr);
the following error will be thrown
Error: Cannot assign requested address: JVM_Bind
What should I do to resolve the problem?
Всем привет. Сегодня хотел запустить сервер чтоб другие могли зайти через инет изменил ип на внешний и логин сервер выдаеть такую ошибку
Error creating ServerSocket: java.net.BindException: Cannot assign requested address: JVM_Bind
[08.09.13 15:22:50] Listening for GameServers on 31.42.182.99:9014
[08.09.13 15:22:50] FATAL: Failed to open server socket. Reason: Cannot assign requested address: bind
java.net.BindException: Cannot assign requested address: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at l2dream.loginserver.mmocore.SelectorThread.openServerSocket(SelectorThread.java:93)
at l2dream.loginserver.L2LoginServer.startServer(L2LoginServer.java:114)
at l2dream.loginserver.L2LoginServer.<init>(L2LoginServer.java:87)
at l2dream.loginserver.L2LoginServer.main(L2LoginServer.java:49)
[08.09.13 15:22:50] Login server shutting down
как исправить?У меня инет идет через роутер.сборка дримов.настройки вот какие делал
LoginServerHostName = 31.42.182.99
LoginServerPort = 2106
# 1 — Порт логин сервера для игровых серверов
# 2 — Адрес логин сервера
LoginPort = 9014
LoginHostName = 31.42.182.99
и для гс
GameServerHostName = 31.42.182.99
GameServerPort = 7777
# 1 — Порт логин сервера
# 2 — Адрес логин сервера
LoginPort = 9014
LoginHost = 127.0.0.1
# Внешнесетевой адрес сервера
ExternalHostname = 31.42.182.99
# Внутрисетевой адрес сервера
InternalHostname = 127.0.0.1
когда все ип были 127.0.0.1 все норм работало.
Изменено 8 сентября, 2013 пользователем Sania
One of the most dreaded errors in Java-based client server-based applications is a networking-related error, e.g. java.net.BindException: Cannot assign requested address: JVM_Bind. I have faced this issue while working with web servers like Tomcat, Jetty, and Weblogic before, but yesterday it came again when one of my colleagues faced this issue in Windows. As soon as Java programmers see java.net.BindException, they come to the conclusion that it’s an issue with two processes listening on the same port and often mistook it for Java.net.BindException: Address already in use: JVM_Bind:8080, which is slightly different than this.
If you look at Java documentation for java.net.BindExcpetion, you will find this «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.»
It’s the second part, which is more interesting in the case of java.net.BindException: Cannot assign requested address: JVM_Bind.
When you start a web server or application server, which typically listens on a port e.g. Tomcat or Jetty listens on 8080 and 8084 for HTTP and HTTPS traffic, they bind a socket to a local address and port. If you give them hostnames like localhost or devhost, then they used /etc/host in both Windows and Linux to resolve the domain name into IP address, if this mapping is incorrect then you will get java.net.BindException: Cannot assign requested address: JVM_Bind.
This host to IP address mapping file can be found at C:WindowsSystem32Driversetchosts, where C:Windows is where you have installed Windows operating system. If you look at this file, you will see it contains IP address and hostname as shown below:
#127.0.0.1 localhost 192.168.52.1 localhost
If this mapping is changed and localhost cannot be resolve to 192.168.52.1 then you will get java.net.BindException: Cannot assign requested address: JVM_Bind. You can try by following program to reproduce this issue, remember, you need admin rights to change /etc/host settings in Windows.
import java.io.IOException; import java.net.ServerSocket; public class ServerSocketTesting { public static void main(String args[]) throws IOException { ServerSocket server = new ServerSocket(8080); System.out.println("Server is started, listening connections on port :8080 "); server.accept(); } }
If your /etc/host mapping is incorrect then you will see something like
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.(ServerSocket.java:194) at java.net.ServerSocket.(ServerSocket.java:106)
Just, correct the mapping, or add 127.0.0.1 against the localhost to resolve this issue. That’s all about how to fix java.net.BindException: Cannot assign requested address: JVM_Bind error in Java-based client-server application like Minecraft, a popular game in Java, which also communicates with the server and other machines using TCP and sockets. It could also occur when you are using web and application servers like Tomcat, Jetty, or Weblogic as well.
Next time, instead of thinking that two processes are listening on the same port, also think about hostname to IP address resolution issue and verify contents of /etc/host file in both Windows and Linux. Let me know if you are facing this issue and not able to resolve it, pasting the error message and what you are trying to do will help to solve your error quickly and accurately.
How to resolve java.net.BindException: Cannot assign requested address: JVM_Bind in Tomcat
If you are getting this issue in the Tomcat web server then open your server.xml, which contains host and port information for Tomcat connectors. You can find server.xml in location (Windows OS) C:Program FilesApache Software FoundationApache Tomcat 7.0.41confserver.xml. Now look for your connector, if you are using default settings then your connector will look like this :
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
but if you have modified it to include address=»TestServer», then look for TestServer mapping in the/etc/hosts file. Try ping with the IP address and see if it is up or not, you will find that it’s incorrect. Just update with the right IP and restart Tomcat.
Similarly, you can resolve java.net.BindException: Cannot assign requested address: JVM_Bind in Jetty or any other web server. The key thing is not to confuse this error with an address already in use error.
All the best and let me know if you face similar issues.
13 ответов
Как отмечали другие люди, это скорее всего связано с другим процессом с использованием порта 9999
. В Windows запустите команду:
netstat -a -n | grep "LIST"
И он должен перечислить все, что забивает порт. Конечно, вам придется пойти и вручную убить эти программы в диспетчере задач. Если это все еще не работает, замените строку:
serverSocket = new ServerSocket(9999);
С
InetAddress locIP = InetAddress.getByName("192.168.1.20");
serverSocket = new ServerSocket(9999, 0, locIP);
Конечно замените 192.168.1.20
на ваш фактический IP-адрес или используйте 127.0.0.1
.
Marvin Pinto
22 янв. 2012, в 22:28
Поделиться
Это может быть связано с неправильной конфигурацией в /etc/hosts
.
В моем случае это было так:
192.168.1.11 localhost
вместо 127.0.0.1 localhost
Oueslati Bechir
31 окт. 2012, в 14:41
Поделиться
Просто для других, кто может посмотреть на этот ответ в надежде решить подобную проблему, я получил аналогичное сообщение, потому что изменился мой IP-адрес.
java.net.BindException: Cannot assign requested address: bind
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:182)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:311)
at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:260)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.server.Server.doStart(Server.java:273)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
cquezel
02 авг. 2013, в 02:25
Поделиться
Ошибка говорит Cannot assign requested address
. Это означает, что вам необходимо использовать правильный адрес для одного из ваших сетевых интерфейсов или 0.0.0.0
для приема соединений со всех интерфейсов.
Другие решения о портах работают только после некорректной черной магии (например, после перезагрузки компьютера, но не для других), потому что порт совершенно неактуальен.
Olathe
10 окт. 2013, в 17:31
Поделиться
Документация по Java для java.net.BindExcpetion
,
Сообщает, что произошла ошибка при попытке привязать сокет к локальный адрес и порт. Как правило, порт используется, или запрошенный локальный адрес не может быть назначен.
Причина:
Ошибка связана с указанным выше вторым условием. Когда вы запускаете сервер (Tomcat, Jetty и т.д.), Он прослушивает порт и привязывает сокет к адресу и порту. В Windows и Linux имя хоста разрешено к IP-адресу из /etc/hosts
Этот файл сопоставления с адресом хоста для IP-адреса можно найти в C:WindowsSystem32Driversetchosts
. Если это сопоставление изменено и имя узла не может быть разрешено к IP-адресу, вы получите сообщение об ошибке.
Решение:
Отредактируйте файл hosts и исправьте сопоставление имени хоста и IP с помощью привилегий администратора.
например:
#127.0.0.1 localhost
192.168.52.1 localhost
Подробнее: java.net.BindException: не может назначить запрошенный адрес.
Lucky
09 июль 2015, в 12:38
Поделиться
Для меня это было потому, что предыдущее изменение jmeter.properties все еще было в игре
httpclient.localaddress=12.34.56.78
Kevin Reilly
15 авг. 2013, в 00:26
Поделиться
если вы используете сервер, там «IP общедоступной сети» и «внутренний IP-адрес сети».
Используйте «внутренний IP-адрес сети» в вашем файле /etc/hosts и «общедоступный IP-адрес сети» в вашем коде.
если вы используете «общедоступный IP-адрес сети» в вашем файле /etc/hosts, вы получите эту ошибку.
Nick Qian
04 янв. 2017, в 03:00
Поделиться
если вы оказались в CentOS?
Вы должны попробовать.
$перезагрузка сети службы
или
перезагрузите сервер.
seyeon
23 авг. 2016, в 02:09
Поделиться
Я столкнулся с этой ошибкой при копировании конфигураций с одного сервера на другой.
У меня было старое имя хоста в свойстве ${JETTY_BASE}/start.ini jetty.host. Установка правильной стоимости свойства jetty.host решила проблему для меня.
Надеюсь, это поможет кому-то в будущем, кто должен работать на нескольких серверах одновременно.
vixelated
16 май 2016, в 22:10
Поделиться
В моем случае удалите из /etc/hosts
- 127.0.0.1 localhost
- 192.168.100.20 localhost < < < » —- (удаление или комментарий)
ael
30 март 2016, в 15:23
Поделиться
Порт берется другим процессом. Возможно, это неисчерпаемая старая версия вашей программы. Убедитесь, что ваша программа прошла чисто или убила его.
Bozho
22 янв. 2012, в 22:30
Поделиться
java.net.BindException: Невозможно назначить запрошенный адрес
Согласно документации BindException
, в основном это:
Сообщает, что произошла ошибка при попытке привязать сокет к локальному адресу и порту. Как правило, порт используется, или запрошенный локальный адрес не может быть назначен.
Итак, попробуйте выполнить следующую команду:
sudo lsof -i:8983
чтобы проверить, использует ли какое-либо приложение тот же порт и убивает его.
Если это не так, убедитесь, что ваш IP-адрес, с которым вы пытаетесь установить соединение, корректен (он правильно назначен вашему сетевому интерфейсу).
kenorb
06 апр. 2015, в 21:48
Поделиться
Ещё вопросы
- 0Проверьте скрытое значение bool для запуска метода
- 1Проблема с WebView на сайте Youtube в Android?
- 1Является ли Material TextAppearance полезным для обработки различных textSize
- 1Карты Google — кластеризация маркеров с помощью нажимаемых маркеров
- 0Использование get_class в блоке try — catch
- 0Jquery прокрутить до элемента, только если он еще не виден
- 0GetElementsByClassName — Perl?
- 0Использование пакетной переменной в запросе sqlcmd
- 0Идентификатор кнопки Rails и события нажатия кнопки
- 1Расположение флажка в checkboxtableviewer по горизонтали в eclipse e4
- 1Переменная TensorFlow не восстанавливается правильно
- 1Удаление строк, содержащих NaN, при сохранении индекса
- 0Скрипт запуска Drupal jQuery для .resize ()
- 0используя дублированные переменные JavaScript
- 0Ошибка при использовании STXXL Autogrow
- 0c ++ Вызов функций через несколько файлов .cpp?
- 0‘SQLSTATE [HY093], я неправильно поставил запятую?
- 0Модуль AngularJS внутри «корневого модуля»
- 0jQuery load () застревает / зависает
- 0Возникают трудности с пониманием программы на С ++, смены и
- 0обеспечение единого #defines среди всех объектных файлов
- 1Как узнать, когда асинхронная задача полностью завершена в андроид студии?
- 0Отладка в Visual Studio — могу ли я увидеть код библиотеки Intel Compiler?
- 1Событие щелчка LinkButton не срабатывает, если какое-либо действие, выполненное с клавишей ENTER, вместо нажатия кнопки
- 1Уведомление не работает .. вечно жду нить Java
- 1Хранение и доступ к данным в py-файле
- 1Удаление одинаковых выбросов в двух временных сериях
- 0Перегрузка C ++ не работает правильно
- 0Изотоп — Адаптивный макет 4,3,2,1
- 1Не удается создать узел cq, когда включен компонент CQ5
- 1Сравнение файлов — содержимое может быть неупорядоченным
- 0Вывести определенное значение массива после запроса в php yii2
- 1MVC 5 использовать сеанс для хранения информации для входа?
- 0Выполнить код, когда отображается частичное представление
- 1Преобразовать ArrayList <Map <String, String >> в jsonArray
- 1тип безопасности (mypy) для параметров функции при использовании * args
- 1Определите, был ли сделан запрос на подпись сертификата с использованием алгоритма SHA1 или SHA2
- 1Ошибка: не могу ждать без волокна
- 1Установить ACL на функцию Lambda Python MediaConvert
- 1Python Seaborn Boxplot: накладывать 95 процентилей на усы
- 0добавить пользовательскую директиву от контроллера
- 0Чтение строк с 2 числами в C ++
- 0Неверные разрешения при локальном запуске PHP-проекта Heroku с помощью Foreman в Ubuntu
- 1Каков наилучший подход для добавления данных в другой фрагмент и сохранения их в виде повторного просмотра предыдущего фрагмента?
- 1Как использовать sqlite в качестве строкового ресурса вместо strings.xml для языка?
- 0Как сравнить элемент объекта php типа bool
- 1ApiDeadlineExceededException с использованием клиента WebService в GWT WebApp
- 0Как выбрать только «родительский» div изображения
- 1Сохранение порядка имен столбцов to_dict
- 1Графический интерфейс Java, отображающий предыдущее окно