DEBUG / SntpClient (60): ошибка запроса: java.net.SocketException: семейство адресов не поддерживается протоколом - PullRequest
6 голосов
/ 12 ноября 2010

Я использую сервер на консоли Linux, который написан на C, и создаю клиент на Android. я не получаю никаких ошибок в DDMS, но пришло сообщение об отладке

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;
 }
};
}

Ответы [ 3 ]

2 голосов
/ 20 января 2012

SNTP - это протокол сетевого времени.Эмулятор пытается получить фактическое время.Я думаю, это не имеет никакого отношения к вашему приложению.

От: http://developer.appcelerator.com/question/117495/javanetsocketexception-address-family-not-supported-by-protocol

1 голос
/ 22 сентября 2011

Я знаю, что это старо, но я верю, что это ваша проблема:

IPAddress =  InetAddress.getByName("127.0.0.1");

Android использует 127.0.0.1 в качестве собственного устройства обратной связи. Чтобы получить "localhost" или ваш сервер, вам потребуется 10.0.2.2.

1 голос
/ 16 февраля 2011

Не забудьте добавить

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

в манифест.

Это помогло мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...