2012-09-29 18 views
10

我想在android中使用UDP套接字,在這裏我從android模擬器發送我的字符串,並通過我的Java程序在PC上接收,但是我的Java程序沒有收到任何東西,雖然當我使用Java程序作爲客戶端和服務器(我做了兩個不同的Java程序)它的工作。如何在android中使用UDP套接字?

這是我的Android主要活動:

public class First extends Activity { 
Button b; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Thread t = new Thread(new Second()); 
      t.start(); 
     } 
    }); 

這是我在Android的第二類:

public class Second implements Runnable { 
Second() 
{ 
    run(); 
} 
public void run() { 
    // TODO Auto-generated method stub 
    try { 

     String messageStr = "Hello Android!"; 
     int server_port = 9876; 
     DatagramSocket s = new DatagramSocket(); 
     InetAddress local = InetAddress.getByName("127.0.0.1"); 
     int msg_length = messageStr.length(); 
     byte[] message = messageStr.getBytes(); 
     DatagramPacket p = new DatagramPacket(message, msg_length, local, 
       server_port); 
     s.send(p); 
    } catch (Exception e) { 

    } 
} 
} 

這是在PC上我的Java代碼:

public static void main(String args[]) throws Exception 
    { 
      DatagramSocket serverSocket = new DatagramSocket(9876); 
      byte[] receiveData = new byte[1024]; 
      byte[] sendData = new byte[1024]; 
      while(true) 
      { 
        DatagramPacket receivePacket = new  DatagramPacket(receiveData,receiveData.length); 
        serverSocket.receive(receivePacket); 
        String sentence = new String(receivePacket.getData(),0,receivePacket.getLength()); 
        InetAddress IPAddress = receivePacket.getAddress(); 
        int port = receivePacket.getPort(); 
        System.out.println("MESSAGE RECEIVED "+sentence+" "+IPAddress+"   "+port); 
      } 
    } 

回答

10

在您Android仿真(和Android設備),127.0.0.1表示Android仿真機,而不是主機PC。你可以訪問你的主機在10.0.2.2

+0

thanx噸的傢伙它的工作 –

+0

假設我想通過WiFi做到這一點,那麼我應該怎麼做? –

+0

使您的服務器可以從互聯網上訪問。 – zmbq