com.sun.net.httpserver错误,什么意思?
com.sun.net.httpserver error, what does is mean?
我的代码如下所示:
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)
为什么?如何解决?
远程计算机上的防火墙 (linux) 不允许您的java 代码打开端口。这需要根据 linux 发行版和防火墙(+网络设置)进行修复。
作为一种可能的解决方法,您可以尝试打开端口 8080。一些 unix 机器会为 root 用户保留低于 1024 的所有端口。
我的代码如下所示:
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)
为什么?如何解决?
远程计算机上的防火墙 (linux) 不允许您的java 代码打开端口。这需要根据 linux 发行版和防火墙(+网络设置)进行修复。
作为一种可能的解决方法,您可以尝试打开端口 8080。一些 unix 机器会为 root 用户保留低于 1024 的所有端口。