0

I'm working on an android application written in Kotlin which requires a client-server model, and I want to use sockets for this (my IDE is Android Studio if it matters). When I do that I get the following output:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.application, PID: 13515
android.os.NetworkOnMainThreadException
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
    at java.net.Socket.connect(Socket.java:586)
    at java.net.Socket.connect(Socket.java:535)
    at java.net.Socket.<init>(Socket.java:427)
    at java.net.Socket.<init>(Socket.java:210)
    at com.example.application.MainActivity$onCreate$3.onClick(MainActivity.kt:37)
    at android.view.View.performClick(View.java:5619)
    at android.view.View$PerformClick.run(View.java:22298)
    at android.os.Handler.handleCallback(Handler.java:754)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:165)
    at android.app.ActivityThread.main(ActivityThread.java:6375)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)

my code:

class MainActivity : AppCompatActivity() {

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

        val serverIP = "127.0.0.1"
        val serverPort = 65432

        fun Context.toast(message: CharSequence) =
            Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

        val signup: TextView = findViewById(R.id.goToSignup)
        signup.setOnClickListener {
            startActivity(Intent(this, SignUp::class.java))
        }

        var enter: Button = findViewById(R.id.enter)
        enter.setOnClickListener{
            Socket(serverIP, serverPort)
        }
    }
}
Omer
  • 67
  • 8
  • Also check this one [How to fix 'android.os.NetworkOnMainThreadException'?](https://stackoverflow.com/questions/6343166/how-to-fix-android-os-networkonmainthreadexception) – Md. Asaduzzaman Jan 26 '20 at 12:16
  • @Md.Asaduzzaman When I use AsyncTask I get an exception of "Connection refused". – Omer Jan 26 '20 at 12:30
  • that is other problem, not related to AsyncTask – Md. Asaduzzaman Jan 26 '20 at 12:31
  • @Md.Asaduzzaman What can it caused by? The server is active. – Omer Jan 26 '20 at 12:35
  • Check this [Android Socket connection refused](https://stackoverflow.com/questions/2425774/android-socket-connection-refused) – Md. Asaduzzaman Jan 26 '20 at 12:37
  • I also added an internet permission to the manifest, and checked the development settings in my device and didn't find there any turned off option that can make it happen. I still get that error. – Omer Jan 26 '20 at 12:59

0 Answers0