No se puede establecer el valor DSCP en la aplicación android

Estoy utilizando android Studio para el desarrollo de la aplicación y quiero establecer el valor DSCP en la cabecera de IP utilizando sockets UDP. Estoy siguiendo este ejemplo .

import android.os.Message; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class UdpClientThread extends Thread{ String dstAddress; int dstPort; private boolean running; MainActivity.UdpClientHandler handler; DatagramSocket socket; InetAddress address; public UdpClientThread(String addr, int port, MainActivity.UdpClientHandler handler) { super(); dstAddress = addr; dstPort = port; this.handler = handler; } public void setRunning(boolean running){ this.running = running; } private void sendState(String state){ handler.sendMessage( Message.obtain(handler, MainActivity.UdpClientHandler.UPDATE_STATE, state)); } @Override public void run() { sendState("connecting..."); running = true; System.setProperty("java.net.preferIPv4Stack", "true"); try { socket = new DatagramSocket(); socket.setTrafficClass(128); //Setting the DSCP value address = InetAddress.getByName(dstAddress); // send request byte[] buf = new byte[256]; DatagramPacket packet = new DatagramPacket(buf, buf.length, address, dstPort); socket.send(packet); sendState("connected"); // get response packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String line = new String(packet.getData(), 0, packet.getLength()); handler.sendMessage( Message.obtain(handler, MainActivity.UdpClientHandler.UPDATE_MSG, line)); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(socket != null){ socket.close(); handler.sendEmptyMessage(MainActivity.UdpClientHandler.UPDATE_END); } } } } 

He buscado en este foro y he llegado a saber que usando System.setProperty("java.net.preferIPv4Stack", "true") podemos manipular los valores DSCP. Pero esto no parece estar funcionando en la aplicación para Android. ¿Cómo puedo lograr el comportamiento deseado? ¿Estoy perdiendo algo por aquí? El código funciona sin errores, pero cuando compruebo el wireshark (captura de "cualquier" interfaz y luego aplicar el filtro para udp) el valor de DSCP del paquete, no se modifica. Estoy usando Emulator en ubuntu 16 para probar el escenario. Cualquier ayuda es apreciada.

El código anterior funciona en el dispositivo Android (probado en Samsung Galaxy S4) pero no en el emulador. Sin embargo, no pude establecer este System.setProperty("java.net.preferIPv4Stack", "true"); En tiempo de ejecución a través del código. El DSCP se puede establecer sin establecer explícitamente esta propiedad en android. Además de esto, si desea cambiar el valor DSCP en la cabecera IP utilizando un programa java simple que no sea el android, puede echar un vistazo a esta respuesta .

  • ¿Por qué no podemos enviar un paquete UDP desde un emulador de Android?
  • ¿Cómo trabajar con UDP en Android?
  • ¿Android 4.x soporta streaming RTSP sobre TCP?
  • Cómo obtener TTL de un paquete UDP en Java?
  • No se pueden enviar paquetes UDP de la máquina de desarrollo a Android Emulator
  • Difusión de audio / vídeo desde android vía udp a wifi y escuchar con vlc
  • UDP Video Streaming en Android
  • Envío de DatagramPacket sin conexión a Internet - Android
  • Envío de paquetes UDP desde ANDROID 2.2 (deseo de HTC)
  • ¿Se eliminan los paquetes si no recibo activamente un DatagramSocket?
  • Paquetes UDP (vía WiFi Direct) nunca llegan
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.