-
Java - UDPJava 2018. 2. 6. 14:53반응형// UDP는 비연결 지향 프로토콜// 파일 전송 같은 경우 깨져서 들어옴// 이어 오기 X, 속도가 중요하다import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;public class Sender {public static void main(String[] args) {// UDP를 사용하려면 DataGram 객체를 사용// 1. DataGramSocket 생성// 2. 보낼 내용 준비// 3. 보낼 내용을 DataGramPacket에 담는다.// 4. 패킷을 전송// 5. 자원 정리(close)try (DatagramSocket socket = new DatagramSocket();){ // 1System.out.println("발신 시작");for(int i=1;i<=3;i++) {String msg = "Data : "+i; // 2System.out.println(msg);byte[] arr = msg.getBytes(); // 3DatagramPacket packet = new DatagramPacket(arr, arr.length,new InetSocketAddress("localhost", 9000));socket.send(packet); // 4}} catch (Exception e) {e.printStackTrace();}// 5는 try-with-resource로 try구문 안에 있는건 try가 끝나면 자동 정리(java7)}}import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;public class Receiver {public static void main(String[] args) throws SocketException, InterruptedException {// 1. DataGramSocket 생성// 2. 받을 패킷 생성// 3. 데이터 수신// 4. 수신 받은 데이터 출력// 5. 자원 정리DatagramSocket socket = new DatagramSocket(9000); // 소켓 생성DatagramPacket packet = new DatagramPacket(new byte[100], 100); // 패킷 생성Thread th = new Thread() {@Overridepublic void run() {while(true) {try {socket.receive(packet); // 패킷 수신System.out.println("데이터 수신 완료");byte[] ch = packet.getData(); // 패킷에서 바이트 배열 추출String data = new String(ch); // 바이트 배열로 문자열 생성System.out.println(data); // 문자열 출력} catch (IOException e) {e.printStackTrace();break;}}}};th.setDaemon(true); // 데몬스레드로 바꾸면서 메인쓰레드랑 동시에 종료th.start();Thread.sleep(7000); // 7초후에 메인(,데몬) 쓰레드 둘다 종료socket.close();}}반응형
'Java' 카테고리의 다른 글
Java - Webserver Http (0) 2018.02.07 Java - Network - File I/O (0) 2018.02.07 Java - Network, MultiChat (0) 2018.02.06 Java - Network - Chat (0) 2018.02.06 Java - Network (0) 2018.02.05 댓글