基于IPv6的Java客户端/服务器

时间:2016-02-25 18:33:49

标签: java sockets network-programming ipv6

我正在尝试获得Java网络编程的一些经验。所以我做了一个简单的基于文本的游戏。这就是它在服务器端的外观:

    try {
        socket = new ServerSocket(PORT);
        while(true) {
           new ConnectedPlayer(socket.accept()).start();
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

这是客户:

System.setProperty("java.net.preferIPv6Addresses","true");
try {
        InetAddress ad = InetAddress.getByName("2a02:8070:b84:6b00:a1d1:30d7:346b:7c14"); 
        socket = new Socket(ad, 9001);
        output = socket.getOutputStream();
        out = new PrintWriter(output);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

上面的地址是运行的机器的Ipv6地址 服务器,我通过一个检测到我的IP地址的网站得到了这个, 它与我在使用ipconfig时获得的不同,尝试使用它们。 当我在使用localhost的同一台机器上测试它时,它工作正常。 但是,现在我想在两台不同的机器上试用它,一台在不同的网络中。问题是,我的互联网服务提供商显然将我限制为“双栈精简版”,这意味着如果我理解正确,我的服务器只能通过Ipv6达到。但那时,那里不需要端口转发。当我现在测试它时,它将无法连接并在一段时间后给出超时。我在两台机器上禁用了防火墙。

0 个答案:

没有答案