2015-08-19 7 views
1

Мой код выглядит следующим образом:ошибка com.sun.net.httpserver, что значит, означает?

import com.sun.net.httpserver.*; 
    import java.net.InetSocketAddress; 
    ... 

    void Srart_Server() 
    { 
     .... 
     InetSocketAddress addr=new InetSocketAddress(80); 
     HttpServer server=HttpServer.create(addr,0);  // Line : 32 

Он работал нормально на моем компьютере, но после того, как я скопировал приложение для Linux и побежал, я получил следующее сообщение об ошибке:

java.net.SocketException: Permission denied 
     at sun.nio.ch.Net.bind0(Native Method) 
     at sun.nio.ch.Net.bind(Net.java:433) 
     at sun.nio.ch.Net.bind(Net.java:425) 
     at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 
     at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
     at sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:100) 
     at sun.net.httpserver.HttpServerImpl.<init>(HttpServerImpl.java:50) 
     at sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(DefaultHttpServerProvider.java:35) 
     at com.sun.net.httpserver.HttpServer.create(HttpServer.java:130) 
     at Http_Server.Srart_Server(Http_Server.java:32) 

Почему? Как это исправить?

+0

Скорее всего, порт, который вы пытаетесь запустить сервер, уже занят. Попробуйте с менее популярным портом - 8080 или 8888 –

+0

В этом случае ошибка errormessage будет читать: «Адрес уже используется». –

ответ

4

Брандмауэр на удаленном компьютере (linux) не позволяет вашему Java-коду открыть порт. Это необходимо исправить на основе дистрибутива Linux и межсетевого экрана (+ сетевых настроек).

В качестве возможного исправления вы можете попробовать открыть порт 8080. Некоторые машины Unix зарезервируют все порты ниже 1024 для пользователей root.

Смежные вопросы