2012. 8. 3. 22:41

package tae.NetworkClient;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import android.util.Log;
 
public class NetworkUDP {
    private static final String serverIP = "10.0.2.2"; //serverIP를 추가합니다.
    private static final int port = 8000; //서버에서 설정한 UDP 포트번호를 추가합니다.
    private String msg;
    private String return_msg;
         
    public NetworkUDP(String _msg) {
        this.msg = _msg;
    }
     
    public String run() {
        try {
            DatagramSocket socket = new DatagramSocket();
             
            InetAddress serverAddr = InetAddress.getByName(serverIP);
             
//TCP와 다르게 UDP는 byte단위로 데이터를 전송합니다. 그래서 byte를 생성해줍니다.
            byte[] buf = new byte[128];
             
            //받아온 msg를 바이트 단위로 변경합니다.
            buf = msg.getBytes();
             
            //DatagramPacket를 이용하여 서버에 접속합니다.
            DatagramPacket Packet = new DatagramPacket(buf, buf.length, serverAddr, port);
            Log.d("UDP", "sendpacket.... " + new String(buf));
            socket.send(Packet);
            Log.d("UDP", "send....");
            Log.d("UDP", "Done.");
 
            socket.receive(Packet);
            Log.d("UDP", "Receive" + new String(Packet.getData()));
 
            //데이터를 받아와 return_msg에 복사합니다.
            return_msg = new String(Packet.getData());
 
        } catch (Exception ex) {
            Log.d("UDP", "C: Error", ex);
            }
        return return_msg;
       }
}

Posted by k1rha