내 Android 앱 중 하나에서 Bonjour 지원을 위해 JmDNS를 사용하고 있습니다. 시작시 NetworkInterface의 각 InetAddress에 대해 하나의 JmDNS 인스턴스를 만듭니다.Bonjour에 어떤 IPv6 주소를 사용해야합니까?
이 지금까지 잘 작동했다for(InetAddress addr : addresses) {
JmDNS jmdns = JmDNS.create(addr, "SomeName");
}
보고, V4와 V6 주소 모두에 대해이 작업을 수행하여, 나는 다른 클라이언트에서 (예를 들어, iOS에서) 제대로 모든 것을 볼 수 있어요 : 그래서 코드를 같이 보입니다.
그러나 IPv6에서는 하나의 네트워크 어댑터를 실제로 여러 개의 v6 주소와 연결할 수 있습니다. 예를 들어, 베타 테스터 중 한 명이 다음 네트워크 설정으로 "버그 보고서"를 보냈습니다. (누출 정보를 막기 위해 숫자를 변경했습니다. 의미가 바뀌지 않기를 바랍니다.)
- ip: /fe80::b4a:8eff:fe91:b1bb%mlan0
isLoopBack: false
isLinkLocal: true
isAnyLocal: false
isSiteLocal: false
- ip: /1234:d000:1234:d1:b4a:8eff:fe91:b1bb
isLoopBack: false
isLinkLocal: false
isAnyLocal: false
isSiteLocal: false
- ip: /10.0.1.5
isLoopBack: false
isLinkLocal: false
isAnyLocal: false
isSiteLocal: true
출력을 보면 두 IPv6 주소가 실제로 매우 비슷하며 하나는 링크 로컬이고 다른 하나는 그렇지 않은 것으로 보입니다. article on Wikipedia을 읽으면 IPv6에서 모든 인터페이스에 실제로 링크 로컬 주소가 있어야한다는 사실을 알게되었습니다.
그러나 실제로 JmDNS 등록에 실제로 어느 것이 사용되는지에 관해 나는 혼란 스럽습니다. [X @ 123456789 종류 : TYPE_SRV 지수 (33), 클래스 : CLASS_IN 지수 1, 이름 : something._tcp
이 들어오는 자신에서 충돌 프로브를 얻었다 : 나는 모두를 등록하면, 내가 말할 로그의 일정한 흐름을 얻을 .노동 조합 지부. ttl : '3599/3600'서버 : 'SomeName.local.:5000']
그래서 어떤 것들을 사용해야합니까? 그리고 그룹에서 등록 할 주소를 결정하기위한 몇 가지 일반적인 규칙이 있습니까?
올바르게 이해한다면이 경우 제 1 및 제 3 주소를 등록하고 제 2 주소는 무시해야한다고 말하고있는 것입니다. 그 맞습니까? – yydl
@yydl 어쨌든 링크 된 장치에 대해서만 이야기하고 있으므로 링크 로컬 IPv6 주소 만 사용하거나 필요로 할 것입니다. –