Autore Topic: Errore EACCES (Permission denied) su connessione via socket  (Letto 1138 volte)

Offline ingrea

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy
  • Sistema operativo:
    win7
Errore EACCES (Permission denied) su connessione via socket
« il: 25 Luglio 2014, 23:46:06 CEST »
0
Salve, ho letto di questo errore nel creare un socket e ho visto che è stata data la risposta di effettuare la connessione su un thread separato. Avendo fatto quanto suggerito l'errore permane! Avete suggerimenti?
Premetto che i permessi li ho messi.
Questo è un frammento di codice che istanzio sul click di un pulsante.

nella mia activity

    private Socket socket;
    private static final int SERVERPORT = 1001;
    private static final String SERVER_IP = "192.168.1.153";

poi nel click di un pulsante istanzio un mio thread personalizzato che apre il socket:

    class ClientThreadSocket extends Thread{
        @Override
        public void run() {
            try {
                if (socket !=null){
                    socket.close();
                    socket = null;
                }
                InetAddress serveraddr = InetAddress.getByName(SERVER_IP);
                socket = new Socket(serveraddr, SERVERPORT);
            } catch (UnknownHostException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }

il tutto va in errore. Riporto il logcat
07-25 17:41:26.197    2283-2283/it.errezeta2.foodysocket I/Choreographer﹕ Skipped 347 frames!  The application may be doing too much work on its main thread.
07-25 17:41:30.077    2283-2307/it.errezeta2.foodysocket W/System.err﹕ java.net.SocketException: socket failed: EACCES (Permission denied)
07-25 17:41:30.077    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:576)
07-25 17:41:30.087    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
07-25 17:41:30.097    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at java.net.Socket.startupSocket(Socket.java:559)
07-25 17:41:30.107    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at java.net.Socket.<init>(Socket.java:225)
07-25 17:41:30.117    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at it.errezeta2.foodysocket.testsocket$ClientThreadSocket.run(testsocket.java:59)
07-25 17:41:30.127    2283-2307/it.errezeta2.foodysocket W/System.err﹕ Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
07-25 17:41:30.137    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at libcore.io.Posix.socket(Native Method)
07-25 17:41:30.137    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
07-25 17:41:30.147    2283-2307/it.errezeta2.foodysocket W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:561)
07-25 17:41:30.147    2283-2307/it.errezeta2.foodysocket W/System.err﹕ ... 4 more

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore EACCES (Permission denied) su connessione via socket
« Risposta #1 il: 26 Luglio 2014, 10:16:27 CEST »
0
Sicuro di aver messo nel manifest il permesso "giusto" per l'uso di INTERNET?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ingrea

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy
  • Sistema operativo:
    win7
Re:Errore EACCES (Permission denied) su connessione via socket
« Risposta #2 il: 26 Luglio 2014, 20:51:38 CEST »
0
si sicuro, questo è il manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="it.errezeta2.testsocket" >

    <user-permission android:name="android.permission.INTERNET"></user-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MyActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore EACCES (Permission denied) su connessione via socket
« Risposta #3 il: 27 Luglio 2014, 09:04:57 CEST »
0
Prima di tutto dovresti usare la formattazione del codice (java e xml): quando inserisci una risposta, vedi una serie di icone di formattazione, tra cui una con la tazzina java e una con scritto XML. Se circondi il codice java/xml con tale apposito marcatore, la sintassi viene evidenziata ed è tutto molto più leggibile (puoi vedere come appare, aprendo qualsiasi altro messaggio del forum).

Quanto al problema, secondo me è perchè usi una porta con numero minore-uguale a 1024.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ingrea

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy
  • Sistema operativo:
    win7
Re:Errore EACCES (Permission denied) su connessione via socket
« Risposta #4 il: 27 Luglio 2014, 10:43:08 CEST »
0
hai ragione per la formattazione scusa ma sono nuovo.
Ho provato con porte superiori ma ugualmente all'atto della connessione va in errore.
Non so più che fare :-(

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore EACCES (Permission denied) su connessione via socket
« Risposta #5 il: 27 Luglio 2014, 10:50:53 CEST »
0
Forse il problema è questo allora:

<user-permission android:name="android.permission.INTERNET"></user-permission>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ingrea

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy
  • Sistema operativo:
    win7
Re:Errore EACCES (Permission denied) su connessione via socket
« Risposta #6 il: 27 Luglio 2014, 19:51:22 CEST »
0
Mi ero scordato di precisare che uso Android Studio beta il nuovo ambiente di google. Rifacendo lo stesso progetto in Eclipse funziona. Deduco che deve essere un baco del nuovo ambiente di sviluppo! Cavoli ci ho speso tre giorni! Speriamo risolvano.