2010-11-12 9 views
6

I m server in esecuzione su console Linux che ha scritto in C e crea client in Android. non ho ottenere alcun errore sul DDMS ma seguente messaggio di debug venireDEBUG/SntpClient (60): tempo richiesto non riuscito: java.net.SocketException: famiglia di indirizzi non supportata dal protocollo

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

ma il messaggio non andrà al server. Ma se si crea un client in C o java funziona bene. qualsiasi suggerimento.

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

Stiamo assistendo lo stesso, ma per tutto il tempo. Succede casualmente e quando si verifica è necessario aprire una nuova connessione HTTP al server. Il problema potrebbe essere introdotto in una delle ultime versioni di Android 2.2 o 2.3. Non abbiamo riscontrato alcun problema su dispositivi reali. Che versione stai usando? Hai provato su un dispositivo reale? –

+0

Sto usando Android 2.1. Non ho alcun problema con i dispositivi reali. Funziona bene per me perché sto compilando il server (che è in C) con il compattatore di arm che Android usa per compilare applicazioni C (se controlli la documentazione di ndk). – Vivek

risposta

1

ricordarsi di aggiungere

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

nel manifesto.

Ha aiutato per me.

1

So che questo è vecchio, ma credo che questo sia il tuo problema:

IPAddress = InetAddress.getByName("127.0.0.1"); 

Android utilizza 127.0.0.1 come proprio loop back dispositivo. Per ottenere "localhost", ovvero il tuo server, avrai invece bisogno di 10.0.2.2.

Problemi correlati