2012-09-29 3 views
10

안드로이드에서 UDP 소켓을 사용하려고합니다. 여기에서 안드로이드 에뮬레이터의 문자열을 보내고 PC의 Java 프로그램에서 수신합니다. 그러나 자바 프로그램을 클라이언트와 서버 (두 개의 다른 Java 프로그램을 만들었습니다)가 작동했습니다.android에서 UDP 소켓을 사용하는 방법은 무엇입니까?

이 내 안드로이드의 주요 활동입니다 : 여기

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) { 

    } 
} 
} 

이것은 PC에 내 자바 코드 수 있습니다 :

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가 아닌 Android 에뮬레이션 시스템을 의미합니다. 호스트에 액세스 할 수 있습니다 10.0.2.2

+0

고마워요 –

+0

내가 그때해야 할 일은 wifi를 통해 이것을하고 싶다고 가정합니다. –

+0

인터넷에서 서버에 액세스 할 수있게하십시오. – zmbq

관련 문제