title: Android java.net.SocketException:socket failed: EACCES (Permission denied)
body: <p>I am getting an Android app, but when I launch it, I get an error in my console. I am using a Datagram socket to create a connection and I'm using 2 classes: <code>MainActivity</code> (it's the main activity of the app) and <code>UdpClientServer</code> to create the connection.</p>
  <p>Here the code MainActivity:</p>
  <pre><code>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;
  }
  </code></pre>
  <p>Here the code UdpClientServer:</p>
  <pre><code>public class UdpClientServer {
  
  public static String sReceive;
  private static DatagramSocket dSocket;
  int receiveBufferSize = 1024;
  int portUdp = 0;
  final String PINGACMD = &quot;AT*PINGA001&quot;;
  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(&quot;&quot; + 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 {
      }
  }
  </code></pre>
  <p>}</p>
  <p>And here the logcat:</p>
  <pre><code>    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.&lt;init&gt;(DatagramSocket.java:80)
  12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/System.err﹕ at com.example.matteo.myfirstapp.UdpClientServer.&lt;init&gt;(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
  </code></pre>
  <p>In my AndroidManifest.xml just added string</p>
  <pre><code>&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&gt;
  </code></pre>
  <p>but it does not work.</p>