티스토리 뷰

언어/JAVA

[JAVA] UDP 통신해보기

Sime 2016. 9. 27. 10:32
보내는 쪽 -  InetAddressTest 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
 
public class InetAddressTest {
 
    public static void main(String[] args) {
            try {
                InetAddress ip = InetAddress.getByName("상대 ip");
                //UDP 순서
                //소켓생성
                DatagramSocket socket = new DatagramSocket();
                //보낼 데이터를 바이트로 배열로 중비.
                 String msg = "하하하";
                 
                 byte[] buf = msg.getBytes();
                
                 //준비한 바이트 배열을 목적지주소와 목적지 포트번호를 통해 패킷으로 준비.
                 int port = 7000;
                 DatagramPacket p = new DatagramPacket(buf, buf.length,ip, port);
                
                 //소켓을 통해 패킷전송.
                 socket.send(p);
                
            } catch (UnknownHostException e) { //주소값이 없을때 발생하는 예외
                e.printStackTrace();
            } catch (SocketException e) { //소켓  에러 예외
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        
            
            
    }
 
}
 
cs


받는 쪽 - UdpReceiver 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
 
public class UdpReceiver {
    public static void main(String[] args) {
        //UDP 데이터 수신하기
        try {
            //수신할 포트를 적어서 소켓 생성.
            int port = 7000;
            DatagramSocket socket = new DatagramSocket(port); //받는을땐 포트입력
            
            //수신할 데이터가 저장될 빈 바이트배열 준비.
            byte[] msg = new byte[512];
            
            //수신할 데이터가 저장될 빈 패킷을 위의 배열과 연결해서 준비.
            DatagramPacket p = new DatagramPacket(msg, msg.length); //빈 배열 , 배열의 사이즈만큼 받아와라
            System.out.println("수신 대기중 ....");
            //소켓에 준비한 빈 패킷을 담아 수신.
            socket.receive(p);
            System.out.println("수신 완료");
            
            System.out.println("수신 내용 : " + new String(msg)); //바이트로 된 메시지를 스트링으로
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        
        
    }
 
}
 
cs



UdpReceiver  실행 후 InetAddressTest  실행하면 경과를 받을 수 있다.



결과 : 

수신 대기중 ....

수신 완료

수신 내용 : 하하하

반응형

'언어 > JAVA' 카테고리의 다른 글

[JAVA] 라이브러리 추가  (0) 2016.10.21
[JAVA] TCP 통신 예제  (1) 2016.09.29
[JAVA] 서버(server)와 클라이언트(client), TCP와 UDP  (0) 2016.09.27
[JAVA] FileWriter, FileReader  (0) 2016.09.26
[JAVA] 직렬화(Serializable)  (0) 2016.09.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함