2010-11-12 12 views
6

Estoy ejecutando el servidor en la consola Linux que está escrito en C y crea el cliente en android. no he conseguir cualquier error en DDMS pero siguiente mensaje de depuración vienenDEBUG/SntpClient (60): tiempo de solicitud fallido: java.net.SocketException: familia de direcciones no compatible con el protocolo

11-12 20:38:06.787: DEBUG/SntpClient(60): request time failed: 
java.net.SocketException: Address family not supported by protocol 

pero el mensaje no irá al servidor. Pero si crea un cliente en C o java funciona bien. cualquier sugerencia.

public class UDPDemo extends Activity { 
    private EditText mEditText; 
    private Button sendButton; 
    private DatagramSocket client_socket; 
    private static InetAddress IPAddress; 
    private byte[] send_data = new byte[1024]; 
    static{ 
    try { 
    IPAddress = InetAddress.getByName("127.0.0.1"); 
} catch (UnknownHostException e1) { 
e1.printStackTrace(); 
} 
} 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mEditText = (EditText)findViewById(R.id.EditText01); 
    sendButton = (Button)findViewById(R.id.Button01); 
    sendButton.setOnTouchListener(send); 
} 
OnTouchListener send = new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_UP) 
    try { 
     client_socket = new DatagramSocket(); 
     String data = mEditText.getText().toString(); 
     send_data = data.getBytes(); 

     DatagramPacket send_packet = new DatagramPacket(send_data, 
       send_data.length, IPAddress, 5000); 

client_socket.send(send_packet); 
mEditText.setText(""); 
    }catch (IOException e) { 
    System.out.println("UDPDemo.enclosing_method() error"+e.getMessage()); 
    e.printStackTrace(); 
    } 
return true; 
} 
}; 
} 
+0

Estamos viendo la misma, pero todo el tiempo. Ocurre al azar y, cuando ocurre, debemos abrir una nueva conexión HTTP al servidor. ¿Podría el problema ser introducido en una de las últimas versiones de Android 2.2 o 2.3? No hemos visto ningún problema en dispositivos reales. ¿Qué versión está utilizando? ¿Has probado en un dispositivo real? –

+0

Estoy usando Android 2.1. No tengo ningún problema con dispositivos reales. Está funcionando bien para mí porque estoy compilando el servidor (que está en C) con el compilador de brazo que usa Android para compilar aplicaciones C. (Si comprueba la documentación de ndk). – Vivek

Respuesta

1

recuerde agregar

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

en el manifiesto.

Ayudó para mí.

1

Sé que esto es viejo, pero creo que este es su problema:

IPAddress = InetAddress.getByName("127.0.0.1"); 

Android utiliza 127.0.0.1 como su propio bucle de nuevo dispositivo. Para obtener "localhost" también conocido como su servidor, necesitará 10.0.2.2 en su lugar.

Cuestiones relacionadas