3

Client code is working 100% because I used it to connect to a server made by someone else. Now I try to make my own server. Does anybody know why this isn't working? I get no errors in server app but it never gets to enter in second thread.

Client code:

public void connectToServer(){ (used in some activity)
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... voids) {
            try {
                socket = new Socket("192.168.0.1", 9999);
                send = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                get = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            }catch (Exception ex){
                Log.e("connection", ex.toString());
            }
            return null;
        }
    }.execute();
}

Server code:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        findViewById<Button>(R.id.buttonStartServer).setOnClickListener {
            Log.e("Button", "Apasat")
            val server = ServerSocket(9999, 10, InetAddress.getByName("0.0.0.0"))
            thread {
                run {
                    Log.e("first run check server", server.inetAddress.hostAddress)
                    Log.e("first run", "waiting for clients")
                    while (true) {
                        val client = server.accept()

                        Log.e("first run", "got a client")
                        thread {
                            run {
                                Log.e("second run", "waiting for messages")
                                val reader = Scanner(client.getInputStream())
                                val writer: OutputStream = client.getOutputStream()
                                while(true) {
                                    try {
                                        val text = reader.nextLine()
                                        writer.write((text + '\n').toByteArray(Charset.defaultCharset()))
                                    }catch (ex: Exception){
                                        Log.e("client" + client.inetAddress.hostAddress, ex.toString())
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
user207421
  • 305,947
  • 44
  • 307
  • 483
Flavius890
  • 59
  • 5

1 Answers1

1

Code works fine but because my server is running on android too, I needed to setup the server device emulator like here: https://developer.android.com/studio/run/emulator-networking#connecting

And someone asked about how to setup here: Communication between two Android emulators where he got steps explained.

Flavius890
  • 59
  • 5