我正在创建一个个人工具,通过Java中的HTTP提供文件。 对于HTTP Server部分,我使用的是com.sun.net.httpserver.HttpServer包。 当我使用localhost或外部主机名从我自己的PC连接时,它可以正常工作,但是当我尝试从外部客户端连接到它时,它却没有。 我还想提一下,java默认策略文件从未被修改过,我在路由器后面,并且端口被正确转发。 我尝试修改策略文件,但我没有任何成功,虽然我不知道设置是否正确或是否应用,我读了一个线程,其中有类似的问题,但使用rmi已经已经通过设置java.rmi.server.hostname系统属性解决了,但我不认为这在我的情况下也可用,因为服务器使用TCP。
以下是初始化服务器的代码:
Settings settings = Controller.getInstance().getModel().getSettings();
int port = settings.getHTTP_PORT();
server = HttpServer.create(new InetSocketAddress(port), 20);
String cachepath = settings.getCachepath();
if(!cachepath.startsWith("/")) cachepath = "/"+cachepath;
server.createContext(cachepath, new HTTPServerHandler());
server.start();
如果你们中的任何一个人能够指出我能做些什么来解决这个问题我会非常感激。
答案 0 :(得分:0)
似乎我尝试连接的服务器是套接字连接被阻止的唯一情况。我让其他人连接到它并且它有效。