Android Binding Socket using IPv6

I have an ip conflict while using IPv4 (story is too long, combination of WifiDirect and WifiHotspot).

Both device has their own local network and "" assigned to both side as ip address. When a device connected to other (as Wi-Fi Router, Hotspot) and try to socket connection, it connect itself (not other device, because it also has a local network and this ip address points own ip address) I think maybe it can be solved by using IPv6.

When I try this code (IPv4) it works fine:

serverSocket = new ServerSocket();

        NetworkInterface nif = null;
        InetAddress inetAddress = null;
        try {
            nif = NetworkInterface.getByName("p2p-wlan0-0");
        } catch (SocketException e) {
        if(nif == null) {
            nif = NetworkInterface.getByName("p2p-p2p0-0");


        Enumeration<InetAddress> nifAddresses = nif.getInetAddresses();

        while (nifAddresses.hasMoreElements()) {
            inetAddress = nifAddresses.nextElement();
            if(inetAddress instanceof Inet4Address) {

        InetSocketAddress address = new InetSocketAddress(inetAddress, 5050);


But when I chance "inetAddress instanceof Inet4Address" to "inetAddress instanceof Inet6Address" it throws exception : bind failed: EADDRNOTAVAIL (Cannot assign requested address)

This is IPv6 address: /fe80::c0bd:d1ff:fe22:4c1e%p2p-wlan0-0%34

This is IPv4 address: /

My question is that, "Can I bind socket with IPv6?". If not, can other device connect to the device using IPv6?

Don't forget that two devices are Access Points and one of them is already connected to other device.

Without IPv6 there is no way to send data without connected device remove its own access point(removeGroup() ).