Получение пакетов UDP в Android - PullRequest
0 голосов
/ 05 марта 2012

Я могу выполнять трансляцию UDP в Android. Ожидается, что клиент отправит свой IP-адрес. Если в одной сети работает 3-4 клиента, я получаю ответ только от одного клиента. Я хочу получать ответы от всех клиентов. Вот мой код вещателя, который даже получает данные, отправленные от клиентов.

public class Scan4Activity extends Activity {
TextView tv;
int i=-1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i("ggrerrrrrrrggg", "hhaqaaaaaaaaaaahhhhhhh");
    setContentView(R.layout.main);
    //String[] b=;
    try {
        Log.i("ggggg", "hhhhhhhhh");
        String modifiedSentence="received!!!:)";
            main(null);
         Toast.makeText(getApplicationContext(), modifiedSentence, Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        // TODO Auto-generated catch block
         System.out.println("FROM SERVER:error");
        e.printStackTrace();
    }
}

   public void main(String args[]) throws Exception
   {
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress = InetAddress.getByName("255.255.255.255");
      byte[] sendData = new byte[1024];

      String sentence = "hello";//inFromUser.readLine();
      sendData = sentence.getBytes();
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 16789);
      clientSocket.send(sendPacket);
      while(true){
      byte[] receiveData = new byte[1024];
      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
      clientSocket.receive(receivePacket);
      String modifiedSentence = new String(receivePacket.getData());


      Toast.makeText(getApplicationContext(), modifiedSentence, Toast.LENGTH_SHORT).show();

      System.out.println("FROM SERVER:" + modifiedSentence);



     try{
      clientSocket.close();
     }
     catch(Exception e){

         System.err.println("Cannot Close the Socket" );
     }
   }
 }

Так, пожалуйста, можно ли помочь?

1 Ответ

1 голос
/ 05 марта 2012

Когда вы тестируете это, тестируете ли вы в сети 2g / 3g, или вы тестируете через Wi-Fi, поскольку, если вы тестируете с использованием 2g / 3g, вы, скорее всего, не будете иметь статические ip на мобильных телефонах, а некоторые "локальные" ip действителен только в сети 2g / 3g, и как только пакет udp покидает сеть операторов мобильной связи и выходит в Интернет, он будет выглядеть так, как будто он исходит от ip операторов и, следовательно, одинаков для всех телефонов.

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