안드로이드 개발 질문/답변
(글 수 45,052)
공유기에 연결된 디바이스(데스크탑 , 스마트폰 , 노트북 등등..)에 내부 IP가 할당이 되는데요.
이 내부 IP를 가져올수 있는방법이 있을까요?
InetAddress 를 이용하면 현재 실행중인 디바이스의 IP를 받아오긴 하는데(스마트폰에서 프로그램 실행하면 스마트폰의 IP주소 데스크탑이면 데스크탑의 내부 IP주소 가져옴.)
제가 원하는건 스마트폰에서 프로그램을 실행하면 스마트폰이 접속된 공유기를 기준으로 그 공유기에 연결되어 있는 모든 기기들에 할당된
IP 주소를 받아오는 것 입니다.
현재 리모컨 기능을 구현하고자 소켓통신을 이용해서 간단히 구현을 했는데 접속할 PC의 내부IP를 이미 알고있기에 별 문제없이 접속이
가능하지만..내부IP를 모르는상태라 가정하고 구현을 할려니 해결이 안되네요. 며칠째 검색과 삽질의 연속입니다.ㅎㅎ
아니면 내부 IP 할당 방식이 192.168.0.x(x = 1,2,3,4,5,......)이라 가정하고 for문 돌려서 접속 가능하게 하고자 하는데 이런 방식도 괜찮은지
여쭙고 싶습니다.




네트워크에 브로드케스트 패킷이란게 있거든요. 브로드 케스트패킷이란 한 네트워크 내부에 있는 모든 노드에게 패킷을 전달하는 것입니다. 방법은 (IPv4에서) 네트워크 주소와 호스트 주소로 나뉘는데 그 호스트 주소를 전부 1로 체워주시면 됩니다.
즉 간단하게 말해서
ip가 192.168.x.x
이고 서브넷 마스크가
255.255.0.0
일때
192.168.255.255로 보내면 브로드케스트가 됩니다.
그것을 통해 ICMP패킷(ping)을 보내면 내트워크 하단의 모든 노트가 거기에 대해 응답을 하고, 응답패킷에는 노트들의 IP주소, 거리(ttl), 반응속도가 들어있겠죠?
하지만 이방법을 사용할 때에 주의할점이라고 할까나...
이 브로드케스트는 Dos 공격에 사용되기도 합니다(정확하게 스머프공격인가..)
보안상(?) 취약하단 말이죠... 그렇기 때문에 방화벽에선 대부분 차단됩니다.
하지만 뭐.. 공유기 내부라면 그건 공유기 설정마다 다르겠지요.