无法从外部客户端连接到Java服务器
问题描述:
我正在创建一个个人工具,它通过Java中的HTTP提供文件。 对于HTTP Server部分,我使用com.sun.net.httpserver.HttpServer包。 当我使用localhost或外部主机名从我自己的PC连接时,它可以工作,但是当我尝试从外部客户端连接到它时,它不会。 我还想提一下,java的默认策略文件并没有被修改过,并且我在路由器后面,而且端口已正确转发。 我试着修改策略文件,但是我没有取得任何成功,虽然我不知道设置是否正确,或者它们是否被应用,并且我读了一个有类似问题的线程,但是使用了rmi已经通过设置java.rmi.server.hostname系统属性解决了,但我不认为这也适用于我的情况,因为服务器使用TCP。无法从外部客户端连接到Java服务器
下面是初始化服务器的代码:如果任何你们可以点我可以为了做来解决这个我真的很感激它
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();
。
答
看来我试图连接的服务器是套接字连接被阻止的唯一情况。我让其他人连接到它,它工作。
我也尝试禁用防火墙,但仍然没有运气。 – warwolf 2011-05-04 15:07:44
你怎么知道转发是正确的?使用Wireshark检查客户端和服务器上的数据包流。 – 2011-05-04 15:23:37
我知道它正确转发,因为我在该端口上启动了另一台服务器,并且该服务器甚至可以在外部运行。 – warwolf 2011-05-07 13:24:13