2011-01-25 3 views
0

우리는 휴대용 장치에서 실행되는 Java 응용 프로그램을 가지고 있으며 우리가 사용하고있는 JVM (CReMe)은 부정적인 DNS 조회를 캐시하는 버그가있는 것처럼 보입니다. 따라서 서버 연결을 시도 할 때 네트워크 연결이 아직 설정되지 않아 DNS 조회가 실패하면 연결이 복원 된 경우에도 조회가 다시 수행되지 않으므로 응용 프로그램이 작동하지 않습니다.Java에서 DNS를 사용하지 않고 네트워크 연결을 테스트하려면 어떻게해야합니까?

Socket을 하드 코딩 된 IP 주소로 열어 테스트를 시도했지만, 앞으로는 주어진 IP 주소가 변경되지 않을 것이라는 보장은 없습니다. 누구든지 우리가 네트워크에 연결되어 있는지 확인하는 다른 방법을 제안 할 수 있습니까?

답변

1

IP 목록을 가지고 연결을 시도 할 수 있습니다. 그들은 당신의 근거리 통신망에있는 기계의 IP 일 수도 있고 구글이나 페이 스북의 IP 일 수도 있습니다.

목록의 IP에 연결할 수없는 경우 네트워크가 다운 된 것으로 간주 할 수 있습니다.

네트워크가 작동 중일 때 DNS 조회를 사용하여 목록을 업데이트 할 수 있습니다.

+0

우리는 이미 시도해보고있는 솔루션에 견고성을 추가하기 때문에이 솔루션을 좋아합니다. 그러나 이것은 약간의 복잡성을 추가합니다. –

1

dnsjava과 같은 사용자 지정 DNS 클라이언트를 사용해 볼 수도 있습니다.

+0

우리는 그 장면을 제공 할 것입니다. 잘하면 우리 장치/JVM에서 OK를 실행할 것입니다. 그렇다면 이것이 우리가 찾고있는 해결책이라고 생각합니다. –

+0

(아마도 CReME JVM) DNSJava가 우리 장치에서 작동하지 않았습니다. 그런 이유로 우리는 IP 주소 목록으로 갈 것입니다. 두 답을 모두 받아 들일 수 있다면 그렇게 할 수 있습니다. –

0

Google의 DNS 서버를 사용해 볼 수 있습니까? 의심 할 여지없이 그들은 항상 바뀔 것이며, 대개는 올라간다는 것을 확신합니다.

8.8.8.8 
8.8.4.4 
+0

이 점을 고려했지만 변경되지 않을 것이라고 확신 할 수는 없습니다. Jay의 제안은 이러한 변화에보다 탄력적이기 때문에 좋습니다. –

+0

음, 제이의 제안은 기본적으로 당신이 알고있는 것과 같습니다. 방금 변경하지 않을 두 가지 IP를 제안했습니다. 내 말은 왜 누군가가 8.8.8.8처럼 보이는 IP를 바꿀 것인가 ... – Svish

관련 문제