Client Socket, non si connette al server

di il
5 risposte

Client Socket, non si connette al server

Buonasera,

sto provando a scrivere un client banale su Android Studio in Kotlin, ma non riesco a collegarmi ad un server che gira su un pc della rete locale.
Il server è funzionante, dal cellulare con telnet riesco ad effettuare la connessione.

Il mio file MainActivity.kt è il seguente:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        val serverAddress = "192.168.1.10"
        val port = 12345
        var socket: Socket? = null
        socket = Socket(serverAddress, port)
        }
}

il mio file AndroidManifest.xml è il seguente:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Client_02"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.Client_02">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Da che può dipendere che non si collega?

Grazie mille in anticipo a tutti quanti.

5 Risposte

  • Re: Client Socket, non si connette al server

    Hai errori specifici?

    Ilbtelnet lo privi da cellulare con un wifi collegato alla LAN o no?

    Se con il cellulare arrivi da fuori alla tua LAN, il firewall blocca tutto e comunque non puoi accedere alla LAN interna

  • Re: Client Socket, non si connette al server

    Ciao,

    dopo aver eseguito le verifiche segnalate da oregon,

    dovresti anche considerare che eseguire una operazione di rete nel thread principale potrebbe dare errori. Questo non lo rilevi in fase di emulazione.

    Hai provato ad eseguire la connessione alla rete in un thread separato ?

  • Re: Client Socket, non si connette al server

    22/05/2025 - By65Franco ha scritto:

    dovresti anche considerare che eseguire una operazione di rete nel thread principale potrebbe dare errori. Questo non lo rilevi in fase di emulazione.

    Hai provato ad eseguire la connessione alla rete in un thread separato ?

    Funziona!

    Ho eseguito la connessione lanciandola in un Thread ed ha funzionato.
    Quindi non si può creare una connessione nel Thread pricipale MainActivity.

    Grazie mille.

  • Re: Client Socket, non si connette al server

    22/05/2025 - java999 ha scritto:

    Funziona!

    Ho eseguito la connessione lanciandola in un Thread ed ha funzionato.

    Esatto... e se non sbaglio il blocco/errore che ricevi nel thread principale è giusto appunto su questa riga :  socket = Socket(serverAddress, port) 
    Accaade questo... su Android da una certa versione in poi è presente un blocco che impedisce l'esecuzione di operazioni che potrebbero essere lente e/o che potrebbero bloccare la UI (l'interfaccia utente).

    In questo caso se il server non risponde, il Socket della connessione rimane in attesa. 
    Questo bloccherebbe la UI e l'utente rimane a sua volta bloccato non potendo più interagire con l'interfaccia.

    Almeno per quel poco che ricordo, la question o l'inghippo, è proprio questo.  ;-)

    Comunque qui trovi la documentazione a riguardo : https://developer.android.com/reference/android/os/NetworkOnMainThreadException

  • Re: Client Socket, non si connette al server

    Per completezza, eccolo qua... da leggere anche questa documentazione... trovi il link Designing for Responsiveness nella documentazione che ti ho messo nel post precedente...

Devi accedere o registrarti per scrivere nel forum
5 risposte