package Ġsh re ck ye . q fb resources h arer . net . discovery . broad caster Ċ Ċ import Ġsh re ck ye . q fb resources h arer . net . discovery . DIS COVERY _ SERVICE _ DEFAULT _ PORT Ċ import Ġjava . lang . Thread . sleep Ċ import Ġjava . net . Data gram Packet Ċ import Ġjava . net . Data gram Socket Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġkotlin . concurrent . thread Ċ Ċ /** Ċ Ġ* ĠA Ġbroad caster Ġthat Ġbroadcast s Ġa ĠUDP Ġmessage Ġto Ġnotify Ġthe Ġavailability Ġof Ġthis Ġpeer . Ċ Ġ*/ Ċ class ĠDiscovery Broad caster ( ĊĠĠĠ Ġval Ġport : ĠInt Ġ= ĠDIS COVERY _ SERVICE _ DEFAULT _ PORT , ĊĠĠĠ Ġval Ġinterval In Millis : ĠLong Ġ= ĠDEFAULT _ INTERVAL _ IN _ M ILL IS Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBRO ADCAST _ IP : ĠString Ġ= Ġ" 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ INTERVAL _ IN _ M ILL IS : ĠLong Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġempty Buffer : ĠByteArray Ġ= ĠByteArray ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbroadcast Address Ġ= ĠInet SocketAddress ( BRO ADCAST _ IP , Ġport ) ĊĊĊĠĠĠ Ġval Ġdata gram Socket : Data gram Socket Ġ= ĠData gram Socket () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdata gram Socket . broadcast Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġthread : ĠThread Ġ= Ġthread Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! data gram Socket . is Closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata gram Socket . send ( Data gram Packet ( empty Buffer , Ġ 0 , Ġbroadcast Address )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( interval In Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata gram Socket . close () ĊĠĠĠ Ġ} Ċ } Ċ