package Ġcom . pm ir kel am . tcp client Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . util . Log Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġjava . io . Data InputStream Ċ import Ġjava . io . Data OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Inet Address Ċ import Ġjava . net . Socket Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ class ĠTcp Client Service Ġ: ĠService () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġworking Ġ= ĠAtomic Boolean ( true ) ĊĠĠĠ Ġprivate Ġvar Ġsocket : ĠSocket ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdata InputStream : ĠData InputStream ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdata OutputStream : ĠData OutputStream ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġmessage Ġ= Ġ" Hello ĠServer " ĊĠĠĠ Ġprivate Ġval Ġrunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġip Ġ= ĠInet Address . get ByName ( IP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Ġ= ĠSocket ( ip , ĠPORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata InputStream Ġ= ĠData InputStream ( socket !!. getInputStream ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream Ġ= ĠData OutputStream ( socket !!. get OutputStream ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( working . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream !!. write UTF ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Received : Ġ" Ġ+ Ġdata InputStream !!. read UTF ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata InputStream !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata InputStream !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Me Foreground () ĊĠĠĠĠĠĠĠ ĠThread ( run nable ). start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġworking . set ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Me Foreground () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠNOT IFICATION _ CHANNEL _ ID Ġ= ĠpackageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Name Ġ= Ġ" Tcp ĠClient ĠBackground ĠService " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchan Ġ= ĠNotification Channel ( NOTIFICATION _ CHANNEL _ ID , Ġchannel Name , ĠNotification Manager . IMPORT ANCE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchan . light Color Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchan . lock screen Visibility Ġ= ĠNotification . VIS IBILITY _ PRIVATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġ( getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . create Notification Channel ( chan ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Builder Ġ= ĠNotification Compat . Builder ( this , ĠNOT IFICATION _ CHANNEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġnotification Builder . set O ngo ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ launcher _ foreground ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title (" Tcp ĠClient Ġis Ġrunning Ġin Ġbackground ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Manager . IMPORT ANCE _ MIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Category ( Notification . CATEGORY _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( 2 , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( 1 , ĠNotification ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠTcp Client Service :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIP Ġ= Ġ" 1 9 2 . 1 6 8 . 1 . 1 0 7 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPORT Ġ= Ġ 9 8 7 6 ĊĠĠĠ Ġ} Ċ }