2010-11-12 43 views
6

我在Linux控制檯上運行服務器,它使用C編寫,並在android中創建客戶端。我還沒有得到關於DDMS任何錯誤,但下面的調試消息來DEBUG/SntpClient(60):請求時間失敗:java.net.SocketException:協議不支持的地址系列

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

但消息不會去服務器。但如果創建客戶端在C或Java它工作正常。 任何建議。

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

我們看到的是一樣的,但始終如一。它隨機發生,當它發生時,我們需要打開一個新的HTTP連接到服務器。是否可以在最新的Android 2.2或2.3版本中引入該問題。我們在真實設備上沒有看到任何問題。你正在使用哪個版本?你在真實設備上測試過嗎? – 2011-01-11 12:57:15

+0

我正在使用android 2.1。我對真實設備沒有任何問題。它對我來說工作的很好,因爲我正在編譯服務器(使用C語言)和arm編譯器,android用於編譯C應用程序(如果您檢查ndk文檔)。 – Vivek 2011-01-12 11:43:15

回答

1

記住添加

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

入清單。

它對我有幫助。

1

我知道這是舊的,但我相信這是你的問題:

IPAddress = InetAddress.getByName("127.0.0.1"); 

Android使用127.0.0.1作爲自己的環回設備。要獲得「本地主機」又名您的服務器,您需要10.0.2.2。

相關問題