I have posted this few days back but now i ran into another problem after solving that one.
DESCRIPTION: working on an android app written in kotlin that behaves as a server side and Python program that works as a client both runs on same computer and try to send and receive messages from each other.I'm using a text view to display messages that i'm receiving from PC(python).
Problem: whenever i try to run client program in python.I get following output on terminal.I don't get the message that server sends on connection
server sent something.....b''
you are about to.....
whereas on the server side it doesn't receives anything from client.
What i have Tried: I have used port forwarding which maps port 5000 on client to 6000 on emulator as someone suggested that in the previous post which basically solved my error:61 connection refused on client side writen in python but unfortunately i have this problem.Is this because of the fact that i'm using kotlin on server side to communicate with python and should use java instead. Or i'm using wrong thread logic.
Please help me out
import socketdef main():client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client_socket.connect(('127.0.0.1', 5000))while True:data = client_socket.recv(1024)print("server sent something.....\n", data)print("you are about to.....")client_socket.sendall(bytes("hey server....", 'utf-8'))breakclient_socket.close()main()
package com.example.soundsourceimport android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.widget.Button
import android.widget.TextView
import java.net.ServerSocket
import java.net.Socket
import java.io.*class MainActivity : AppCompatActivity() {private lateinit var textView:TextViewcompanion object{const val COMMUNICATIONPORT = 6000private lateinit var serversocket:ServerSocketprivate lateinit var serverThread:Threadprivate lateinit var updateConversationHandler:Handler}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
// val sendButton:Button = findViewById(R.id.send_button)val showLocation = findViewById(R.id.show_location) as? ButtonshowLocation?.setOnClickListener {val intent = Intent(this,SoundLocation::class.java)startActivity(intent)}textView = findViewById(R.id.text_view)
// sendButton.setOnClickListener{
// serverThread = Thread(ServerThread())
// serverThread.start()
// }serverThread = Thread(ServerThread())serverThread.start()}class ServerThread:Runnable{override fun run() {var socket: Sockettry {serversocket = ServerSocket(COMMUNICATIONPORT)} catch (e:IOException) {e.printStackTrace()}while (!Thread.currentThread().isInterrupted) {try {socket = serversocket.accept()val message = "client connected from ${socket.localAddress} and ${socket.localPort}....."MainActivity().textView.text = messageval commThread = CommunicationThread(socket)Thread(commThread).start()} catch (e: IOException) {e.printStackTrace()}}}}class CommunicationThread(clientSocket: Socket) : Runnable {private var input: BufferedReader? = nullprivate var output:PrintWriter? = nullinit {try {input = BufferedReader(InputStreamReader(clientSocket.getInputStream()))output = PrintWriter(clientSocket.getOutputStream(),true)} catch (e: IOException) {e.printStackTrace()}}override fun run() {while (!Thread.currentThread().isInterrupted) {try {output!!.println("Thanks for connecting with me.....")val read = input!!.readLine()updateConversationHandler.post(MainActivity().UpdateUIThread(read))} catch (e: IOException) {e.printStackTrace()}}}}internal inner class UpdateUIThread(private val msg: String) : Runnable {override fun run() {val message = "Client Says: $msg \n"textView.text = message}}}