Android java.net.Exception socketexception:socket a échoué: EACCES (Permission denied)

Salut les gars je suis d'une application android mais lorsque je le lance j'ai une erreur dans ma console. Je suis en utilisant un socket Datagramme pour créer une connexion et je suis à l'aide de 2 classes: MainActivity (c'est l'activité principale de l'application) et UdpClientServer pour créer la connexion.

Ici le code MainActivity:

public class MainActivity extends Activity {

private UdpClientServer cu;
private EditText textIpScheda;
private EditText textUdpPort;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textIpScheda = (EditText) findViewById(R.id.textIpScheda);
    textUdpPort = (EditText) findViewById(R.id.textUdpPort);


    try {
        cu = new UdpClientServer(this);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public EditText getTextIpScheda(){
    return textIpScheda;
}

public void setTextIpScheda(EditText textIpScheda){
    this.textIpScheda = textIpScheda;
}

public EditText getTextUdpPort() {
    return textUdpPort;
}

public void setTextUdpPort(EditText textUdpPort) {
    this.textUdpPort = textUdpPort;
}

Ici le code UdpClientServer:

public class UdpClientServer {
public static String sReceive;
private static DatagramSocket dSocket;
int receiveBufferSize = 1024;
int portUdp = 0;
final String PINGACMD = "AT*PINGA001";
InetAddress ipScheda;
byte[] receiveData = new byte[receiveBufferSize];
private MainActivity gui = null;
public UdpClientServer(MainActivity gui) throws SocketException, IOException {
this.gui = gui;
portUdp = Integer.parseInt(String.valueOf(gui.getTextUdpPort().getText()));
dSocket = new DatagramSocket(portUdp);
}
public void run(){
while (true) {
//svuotamento buffer
Arrays.fill(receiveData, (byte) 0);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
dSocket.receive(receivePacket);
} catch (IOException e) {
e.printStackTrace();
}
ipScheda = receivePacket.getAddress();
int port = receivePacket.getPort();
gui.getTextUdpPort().setText("" + port);
gui.getTextIpScheda().setText(ipScheda.getHostAddress());
sReceive = new String(receivePacket.getData());
this.sendCommand(PINGACMD);
}
}
public void sendCommand(String outSentence){
byte[] sendData = outSentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, ipScheda, portUdp);
try {
dSocket.send(sendPacket);
Thread.sleep(100);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
finally {
}
}

}

Et ici le logcat:

    12-29 11:43:22.291  28914-28914/com.example.matteo.myfirstapp W/System.err java.net.SocketException: socket failed: EACCES (Permission denied)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at libcore.io.IoBridge.socket(IoBridge.java:623)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at java.net.PlainDatagramSocketImpl.create(PlainDatagramSocketImpl.java:93)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at java.net.DatagramSocket.createSocket(DatagramSocket.java:157)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at java.net.DatagramSocket.<init>(DatagramSocket.java:80)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at com.example.matteo.myfirstapp.UdpClientServer.<init>(UdpClientServer.java:32)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at com.example.matteo.myfirstapp.MainActivity.onCreate(MainActivity.java:24)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.Activity.performCreate(Activity.java:5933)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.ActivityThread.access$800(ActivityThread.java:144)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.os.Handler.dispatchMessage(Handler.java:102)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.os.Looper.loop(Looper.java:135)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at android.app.ActivityThread.main(ActivityThread.java:5221)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at java.lang.reflect.Method.invoke(Native Method)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at java.lang.reflect.Method.invoke(Method.java:372)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at libcore.io.Posix.socket(Native Method)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err at libcore.io.IoBridge.socket(IoBridge.java:608)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err ... 18 more

Dans mon AndroidManifest.xml juste ajouté de la chaîne

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

mais il ne fonctionne pas

Pouvez-vous m'aider?
Grâce

  • Vous essayez de nous un numéro de port < 1024 et vous n'avez pas de racine autorisation.
  • je suis en utilisant le numéro de port 5200
  • Avez-vous d'autres applications qui s'exécutent sur le port 5200 ? Vous pouvez essayer quelques-uns plus de nombre aléatoire pour tester. Comme vous n'êtes pas en mesure de créer des sockets avec le port de votre choix. Essayez avec un autre port.
  • Double Possible de message d'Erreur " java.net.Exception socketexception: socket a échoué: EACCES (Permission denied)'