장치에서 데이터를 수신하는 스레드가 있습니다. 라인 myDatagramPacket.getAddress().getHostName()
에 도착하면 5-6 초 동안 멈추고 계속됩니다.DatagramPacket.getAddress(). getHostName()이 내 스레드를 차단하고 있습니다.
"192.168.1.163"과 같이 하드 코드 된 IP를 시도했을 때 논스톱으로 작동합니다.
이 문제를 어떻게 해결할 수 있습니까?
제안 사항?
장치에서 데이터를 수신하는 스레드가 있습니다. 라인 myDatagramPacket.getAddress().getHostName()
에 도착하면 5-6 초 동안 멈추고 계속됩니다.DatagramPacket.getAddress(). getHostName()이 내 스레드를 차단하고 있습니다.
"192.168.1.163"과 같이 하드 코드 된 IP를 시도했을 때 논스톱으로 작동합니다.
이 문제를 어떻게 해결할 수 있습니까?
제안 사항?
그 라인은 역 DNS 조회을 수행하는 것처럼 보입니다. 자연스럽게 느려질 것입니다.
조회하지 않고 논리를 수정하거나 시도 할 수없는 경우 호출 결과를 캐싱 해보십시오 (여러 번 지불하지 않으므로).
송신자의 IP를 가져 오려면 myDatagramPacket.getAddress() 만 사용하여 getHostName()을 호출하는 대신 getHostAddress() 및/또는 toString()을 사용하여 IP를 나타내는 InetAddress를 반환합니다.).
안녕하세요 @ 두란 달. 사실 내가 필요한 것은 UDP로 데이터를받은 장치의 IP를 검색하는 것입니다. 그리고 그것은 로컬 IP입니다. –
OMG a 영웅 :) * packet.getAddress(). toString(). substring (1) * (i가 사용 되었기 때문에 /로 사용 된 하위 문자열) *처럼 사용했을 때. 게시물을 수정하십시오. 답으로 표시하겠습니다. –
@Durandal에 감사드립니다! –