Как использовать Inet6Address в java

Еще раз мне нужна небольшая помощь в том, как я могу использовать Inet6Address для java.

Поскольку я разрабатываю приложение для получения адреса IPv4, но теперь я хочу расширить его до IPv6. И кажется, что я не могу получить IPv6-адрес, и он продолжает получать IPv4-адрес.

И я пытаюсь импортировать java.net.Inet6Address;

С существующим кодом, который у меня есть, который показан ниже.

public SocketAddress getInetAddress(){
   return channel.getRemote();
}

Канал использует проект netty.

Как я могу сделать с Inet6Address?

As i found on this web http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Inet6Address.html

public InetSocketAddress getInetAddress(){
   Inet6Address ipv6 = (Inet6Address)channel.getRemoteAddress.**getAddress();**

    return channel.getRemote();
}

Могу ли я также спросить, может ли использовать .getAddress (), может ли кто-нибудь помочь мне по этим вопросам?

Как мне нужно скачать файл jar для работы над этим?

Версия java, которую я использую, - это java 6.

От Swift

0
nl ja de

2 ответы

если вы в порядке - попробуйте использовать

Java-ipv6

0
добавлено
Привет, TechExchange, erm, что я делаю, - это что-то, чтобы получить Адресу IPv6 удаленно. Использование netty. Могу ли я сделать это с помощью ссылки, которую вы предоставляете? Можно сделать пример. От Swift
добавлено автор mpswift, источник

каков тип вашего канала ? никогда не использовал 'netty', но в мире sun nio, предполагая, что sa является экземпляром SocketAddress , просто используйте sa.getAddress() . если sa представляет сокет по адресу IPv4, вы получите экземпляр Inet4Address или Inet6Address , если он является сокетом по адресу IPv6 ,

добавьте код привязки IPv6:

InetAddress[] addresses = InetAddress.getAllByName("localhost");
Inet6Address add6 = null;
for(InetAddress add : addresses) { 
    if (add instanceof Inet6Address) {
        add6 = add;
        break;
    }
}
if (add6==null)
    throw new RuntimeException("no IPv6 local address found!");
InetSocketAddress sa=new InetSocketAddress(add6, port);
...
0
добавлено
Inet6Address add = (Inet6Address) ((InetSocketAddress) channel.getRemoteAddress() & zwnj;) .getAddress() ?
добавлено автор notXX, источник
о, вы просто указали порт. попробуйте код, добавленный в ответ.
добавлено автор notXX, источник
я имею в виду, независимо от того, где вы связываете порт сервера, измените там код. измените его только на IPv6, используйте Inet6Address для создания InetSocketAddress и укажите метод InetSocketAddress для метода привязки.
добавлено автор notXX, источник
Я не знаю, какой код вы связываете с портом сервера?
добавлено автор notXX, источник
в вашем коде вы должны где-то привязать порт сервера. укажите адрес IPv6 и порт для привязки там. затем подключитесь к этому адресу и порту.
добавлено автор notXX, источник
еще не использовали netty. возможно, вы можете просто привязать свою услугу к локальному адресу IPv6, тогда соединение IPv4 не произойдет.
добавлено автор notXX, источник
Я думаю, что это Inet4Address, который предполагает, что базовое соединение использует IPv4-адрес. Убедитесь, что соединения используют протокол IPv6?
добавлено автор notXX, источник
если вы уверены, что базовое соединение - IPv6, просто введите InetAddress в Inet6Address .
добавлено автор notXX, источник
это org.jboss.netty.channel.socket.SocketChannel ? возможно, мы должны углубиться в код нетти ...
добавлено автор notXX, источник
Я думаю, что это как InetAddress add = ((InetSocketAddress) channel.getRemoteAddress ()). getAddress() и независимо от того, является ли добавление IPv6.
добавлено автор notXX, источник
ваше приложение - серверная сторона или клиентская сторона?
добавлено автор notXX, источник
нет. на самом деле InetAddress может быть Inet4Address (IPv4) или Inet6Address (IPv6), в зависимости от базового соединения.
добавлено автор notXX, источник
Серверная сторона. Могу ли я использовать что-то с Inet6Address?
добавлено автор mpswift, источник
Привет, нокс, как я это сделал, это InetSockAddress sa = новый InetSocketAddress (Openport); Final ChannelGroup cg = new DefaultChannelGrop (); cg.add (bootstrap.bind (са)); Вот как я это сделал ...
добавлено автор mpswift, источник
Привет, но я не так, но это от org.jboss.netty.channel.Channel <- есть метод там call getRemoteAddress ();
добавлено автор mpswift, источник
Я использую java ..
добавлено автор mpswift, источник
getRemoteAddress() возвращает тип SocketAddress. Именно с этого сайта. docs.jboss.org/netty/3.2/ апи/орг/JBoss/Netty/канал/& hellip;
добавлено автор mpswift, источник
erm есть образец о том, как это сделать?
добавлено автор mpswift, источник
как я могу это сделать?
добавлено автор mpswift, источник
Извините за задержку с ответом. Я тоже, что я думаю. Вот почему я не смог получить свой IPv6-адрес. Erm соединений, которые я использую как с подключением IPv4, так и с IPv6. Начиная я думал, что он даст мне как IPv4, так и IPv6-адрес. Тогда это заканчивается тем, что дает мне только адрес IPv4 = (Могу ли мне помочь? Нетх мне нужно отредактировать проект нетти?
добавлено автор mpswift, источник
у меня есть erro на несоответствие не может скрываться от InetAddress до Inet6Address = (
добавлено автор mpswift, источник
Это то, что кажется, что я не могу просто ввести Inetaddress в Inet6Address. Любая идея, как я могу это сделать?
добавлено автор mpswift, источник
разве это не для получения адресов IPv4?
добавлено автор mpswift, источник
Но могу ли я больше использовать Inet6Address add = ((InetSocketAddress) channel.getRemoteAddress ()). GetAddress() & zwnj;? Будет ли у меня проблема с этим?
добавлено автор mpswift, источник
erm ok ya true тоже нормально. notxx спасибо за помощь, я пойду, попробуй, действительно спасибо за твою помощь =)
добавлено автор mpswift, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async