2013-07-12 3 views
0

Я создал программу для Arduino для приема UDP-пакетов и отправки простого ответа на эти пакеты. По какой-то причине мое приложение для Android не может получить ответ в общедоступном Интернете. Если я подключу свой телефон к WLAN, мое приложение получит ответ. Во всех случаях Arduino может получать эти пакеты, отправленные Android, потому что я назначил переадресацию портов для этого порта.Приложение Java не может получать пакеты UDP через Интернет

Я также проверил сайт своего интернет-провайдера на предмет возможных ограничений портов. Мое проводное соединение дома, где подключено Arduino, имеет открытый IP-адрес без ограничений на этот порт. У моего поставщика мобильного широкополосного подключения нет ограничений на этот порт, но они используют NAT для мобильных соединений. Может это проблема?

На Android У меня есть следующий код:

byte[] data = ("data").getBytes(); 

try { 
    DatagramPacket packet = new DatagramPacket(data, data.length, arduinoAddress, arduinoPort); 

    socket.send(packet); 

    byte[] receiveData = new byte[1]; 
    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
    socket.receive(receivePacket); 

    System.out.println(new String(receivePacket.getData())); 
} catch(InterruptedIOException e) { 
    e.printStackTrace(); 

    return 2; 
} catch(IOException e) { 
    e.printStackTrace(); 
} 

Arduino имеет следующее:

void loop() { 
    int packetSize = UDP.parsePacket(); 

    if(packetSize) { 
     UDP.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); 
     String data = String(packetBuffer); 

     for(int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) { 
      packetBuffer[i] = 0; 
     } 

     Serial.println(data); 

     UDP.beginPacket(UDP.remoteIP(), UDP.remotePort()); 
     UDP.print("1"); 
     UDP.endPacket(); 

     ... 

ответ

0

Whan NAT используется, вы должны направить UDP пакеты инициирующего устройства. Я сомневаюсь, что это делают мобильные провайдеры.

Поэтому использование UDP для получения ответов из Интернета в мобильных средах будет затруднительным.

0

Существует много информации по этой теме. Поисковое слово, которое вы ищете, это «пробивка отверстий» или «пробивка отверстий UDP».

Of course a Wikipedia article

A StackOverflow for good measure

У меня есть подобный вопрос, как вы. В соответствии с тем, как подключить мой мобильный телефон и небольшое устройство, я ищу что-то частично между Twitter и чат-сервисом. Как вы отправляете небольшие личные сообщения, но только по точкам?

Смежные вопросы