Simple UDP server & client socket 예제
DatagramSocket 및 DatagramPacket 사용법만 기억
ex)
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | public class DatagramTest { public DatagramTest() { super (); new Thread() { public void run() { startUDPServer(); } }.start(); new Thread() { public void run() { startUDPClient(); } }.start(); } private void startUDPServer() { DatagramSocket server = null ; try { server = new DatagramSocket( 9999 ); //server 생성 int bufferLength = 256 ; byte [] buffer = new byte [bufferLength]; DatagramPacket packet //data 받기 위한 객체를 buffer와 length 크기를 byte 배열로 지정하여 생성 = new DatagramPacket(buffer, bufferLength); while ( true ) { System.out.println( "server : waiting for request." ); server.receive(packet); int dataLength = packet.getLength(); System.out.println( "server : received. Data length : " + dataLength); //get byte from packet and get it string String data = new String(packet.getData(), 0 , dataLength); // System.out.println( "received data : " +data); if ( data.equals( "EXIT" )) { System.out.println( "stop datagram server" ); break ; } } System.out.println( "--------------" ); } catch (Exception e) { e.printStackTrace(); } finally { if (server != null ) server.close(); } } private void startUDPClient() { for ( int loop= 0 ; loop < 3 ; loop++) { sendDatagramData( "I hate UPD : " + new Date()); } sendDatagramData( "EXIT" ); } private void sendDatagramData(String data) { try { DatagramSocket client = new DatagramSocket(); /*받을 서버 지정*/ InetAddress address = InetAddress.getByName( "127.0.0.1" ); //byte array로 변환 byte [ ] buffer = data.getBytes(); //DatagramPacket 생성 및 포트 지정. DatagramPacket packet = new DatagramPacket(buffer, 0 , buffer.length, address, 9999 ); client.send(packet); System.out.println( "Client: send Data" ); client.close(); Thread.sleep( 1000 ); } catch (Exception e) { // TODO: handle exception } } } |
출처 : 자바의 신
'java' 카테고리의 다른 글
코테 유용한 함수 모음 (JAVA) (0) | 2022.01.08 |
---|---|
try with resource 구문 예제 (JAVA 7) (0) | 2019.09.24 |
Simple server & client socket 예제 (0) | 2019.09.22 |
Buffer class의 이해 (0) | 2019.09.22 |
NioSample (0) | 2019.09.22 |