2010-11-12 41 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。

相关问题