ServerSocket терпит неудачу при создании - PullRequest
2 голосов
/ 10 апреля 2011

У меня следующая конструкция:

try {
    serverSocket = new ServerSocket(port);
} catch (Exception e) {
    throw new RuntimeException("Could not create server socket.");
}

, и конструкция завершается неудачно, и я получаю сообщение об ошибке «Не удалось создать сокет сервера».Порт всегда 8085. Я открыл как внешние, так и внутренние порты в моем (Windows 7) брандмауэре.В чем может быть проблема?

Исключением является IOException:

Исключение в потоке "main" java.lang.RuntimeException: Не удалось создать сокет сервера.в cs236369.proxy.ProxyServer. (ProxyServer.java:23) в cs236369.proxy.ProxyServer.main (ProxyServer.java:62)

Запуск netstat -an дает следующий результат:

TCP    0.0.0.0:8085           0.0.0.0:0              LISTENING
TCP    [::]:8085              [::]:0                 LISTENING

Трассировка стека:

java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at cs236369.proxy.ProxyServer.<init>(ProxyServer.java:21)
at cs236369.proxy.ProxyServer.main(ProxyServer.java:63)

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Вы получите более подробную причину для своего исключения, если включите перехваченное исключение в недавно сгенерированное исключение:

try {
    serverSocket = new ServerSocket(port);
} catch (Exception e) {
    throw new RuntimeException("Could not create server socket.", e);
}

Однако мое первоначальное предположение состоит в том, что порт уже используется, есливы уже имели дело с проблемами брандмауэра.

1 голос
/ 10 апреля 2011

Согласно API, BindException

Сигнализирует о том, что произошла ошибка при попытке привязать сокет к локальному адресу и порту.Как правило, порт используется или запрошенный локальный адрес не может быть назначен.

В основном этот порт может использоваться другим процессом, даже, возможно, другим экземпляром того же приложения из-занечистое отключение.Эта ссылка может помочь вам устранить неполадки.

Примечание:

Опубликованные результаты выполнения команды netstat -an, кажется, подтверждают, что порт 8085 используется несколькими процессами, что приведет к тому, что вы встретите BindException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...