I have simple client and server socket application connecting each other based on this code. The problem is i can send and get values but when client getting answer from server continue to send message.
Where is my problem?
here is server : My server socket is in Service.I execute it when service starts
class SocketService: Service() {
override fun onBind(intent: Intent?): IBinder? {
    return null
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    thread { ClientHandler().run() }
    return START_STICKY
}
internal inner class ClientHandler() : Runnable{
    override fun run() {
        val server = ServerSocket(5000)
        val client = server.accept()
        var reader = BufferedReader(InputStreamReader(client.getInputStream()))
        var writer = PrintWriter(client.getOutputStream())
        try {
            receiveString = reader.readLine()
            while(receiveString != "")
            {
                println(receiveString)
                writer.write("hello from server" + "\n")
                writer.flush()
            }
            writer.close();
            reader.close();
            server.close();
            client.close();
        } catch (ex: Exception) {
            Timber.e("$TAG $formatted $ex")
        }
    }
}
Here my client :
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    connectToPaymentService()
}
fun connectToPaymentService(){
    thread { ThreadopenPort().run() }
}
internal inner class ThreadopenPort : Runnable {
    override fun run() {
        val socket: Socket
        try {
            socket = Socket(SERVER_IP, SERVER_PORT)
            output = PrintWriter(socket.getOutputStream())
            input = BufferedReader(InputStreamReader(socket.getInputStream()))
            rMessage = input!!.readLine()
            println(rMessage)
            while(rMessage != ""){
                output!!.write("hello from client" + "\n")
                output!!.flush()
                rMessage = input!!.readLine()
            }
            output!!.close();
            input!!.close();
            socket.close();
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}
 
    