2012-03-05 2 views
0

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

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

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

+0

Нет. Я не тестирую его на сети 2g/3g, но я тестирую его на WIFI ... Я транслирую с использованием 255.255.255.255 .. – ragz

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