package Ġcom . ab iot s . network utils . utils Ċ Ċ import Ġcom . ab iot s . network utils . Build Config Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . net . Inet 4 Address Ċ import Ġjava . net . Inet 6 Address Ċ import Ġjava . net . Inet Address Ċ import Ġjava . net . NetworkInterface Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . collections . ArrayList Ċ Ċ /** Ċ Ġ* Ġ@ author ĠJ ĠSu has ĠB hat Ċ Ġ*/ Ċ object ĠNetwork Utils Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Tim ber . tree Count () Ġ== Ġ 0 Ġ&& ĠBuild Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . plant ( Tim ber . Debug Tree ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠUnit ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġis IPv 4 Address ( ipAddress : ĠString ): ĠBoolean Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ Ġ( Inet Address . get ByName ( ipAddress ) Ġis ĠInet 4 Address ) ĊĠĠĠ Ġ}. get OrDefault ( false ) ĊĊĠĠĠ Ġfun Ġis IPv 6 Address ( ipAddress : ĠString ): ĠBoolean Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ Ġ( Inet Address . get ByName ( ipAddress ) Ġis ĠInet 6 Address ) ĊĠĠĠ Ġ}. get OrDefault ( false ) ĊĊĠĠĠ Ġfun Ġis Ip From Local Network ( ipAddress : ĠString ): ĠBoolean Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ ĠInet Address . get ByName ( ipAddress ). is Site Local Address ĊĠĠĠ Ġ}. get OrDefault ( false ) ĊĊĠĠĠ Ġfun Ġget Local IPv 4 Devices Addresses () Ġ= ĠArrayList < Inet Address >(). apply Ġlocal Ip 4 Devices @{ ĊĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Getting Ġall Ġthe Ġlocal ĠIPv 4 Ġaddresses ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . list ( NetworkInterface . get Network Interfaces ()). forEach Ġ{ Ġnetwork Interface Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . list ( network Interface . inet Addresses ). forEach Ġ{ Ġinet Address Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! inet Address . is Loop back Address Ġ&& Ġinet Address Ġis ĠInet 4 Address ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Found Ġa Ġlocal ĠIPv 4 Ġaddress Ġ$ inet Address ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ local Ip 4 Devices . add ( inet Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" error Ġgetting Ġthe Ġdevice ĠIP Ġaddress Ġ${ it . localized Message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠLong . millis To Sec () Ġ= ĠTimeUnit . MILLISECONDS . to Seconds ( this ) Ċ } Ċ