Как использовать сокеты UDP в android?

Я пытаюсь использовать UDP-сокеты в android, здесь я отправляю свою строку из эмулятора android и получаю ее по моей программе Java на ПК, но моя Java-программа ничего не получает, хотя, когда я использовал программу Java как клиент и сервер ( Я сделал две разные программы Java), это сработало.

Это моя основная деятельность 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(); } }); 

Вот мой второй класс в андроиде:

  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) { } } } Во-  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) { } } } 

Это мой код 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); } } в  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); } } 

На вашей эмуляции Android (и Android-устройства) 127.0.0.1 означает компьютер эмуляции Android, а не основной компьютер. Вы можете получить доступ к вашему хосту в 10.0.2.2