Socket 및 In/Out stream 다루는 부분을 중점적으로 확인
Socket과 InputStream, OutputStream을 사용한다는 것을 기억.
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | public class SocketTest { public SocketTest() { super (); new Thread() { public void run() { ServerTestSampleRun(); }; }.start(); new Thread() { public void run() { ClientTestSampleRun(); }; }.start(); } private void ServerTestSampleRun() { ServerSocket server = null ; Socket client= null ; try { server = new ServerSocket( 9999 ); //server 객체 생성 while ( true ) { System.out.println( "server : Waiting for request..." ); client = server.accept(); //socket 생성 후, client의 연결을 대기 System.out.println( "server : accepted" ); InputStream stream = client.getInputStream(); //client로 부터의 메세지를 받기 위한stream BufferedReader in = new BufferedReader( new InputStreamReader(stream)); //문자열 처리를 위해 사용 String data = null ; StringBuilder receivedData = new StringBuilder(); while ((data = in.readLine())!= null ){ receivedData.append(data); } System.out.println( "received data : " +receivedData.toString()); in.close(); stream.close(); client.close(); if (receivedData!= null && "EXIT" .equals(receivedData.toString())) { System.out.println( "stop SocketServer" ); break ; } System.out.println( "-------" ); } } catch (Exception e) { e.printStackTrace(); } finally { try { if ( server != null ) server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void ClientTestSampleRun() { for ( int loop = 0 ; loop < 3 ; loop++) { sendSocketData( "I hate java at " + new Date()); } sendSocketData( "EXIT" ); } private void sendSocketData(String data) { Socket socket = null ; try { System.out.println( "client : connecting..." ); socket = new Socket( "127.0.0.1" , 9999 ); //socket을 만드는 것만으로도 연결이 수행 System.out.println( "client : connect status = " +socket.isConnected()); Thread.sleep( 1000 ); OutputStream stream = socket.getOutputStream(); //server로 데이터 전송을 위한 stream을 가져옴. BufferedOutputStream out= new BufferedOutputStream(stream); byte [] bytes = data.getBytes(); out.write(bytes); System.out.println( "client : send data" ); out.close(); Thread.sleep( 3000 ); } catch (Exception e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } |
출처 : 자바의 신
'java' 카테고리의 다른 글
try with resource 구문 예제 (JAVA 7) (0) | 2019.09.24 |
---|---|
Simple UDP server & client socket 예제 (0) | 2019.09.22 |
Buffer class의 이해 (0) | 2019.09.22 |
NioSample (0) | 2019.09.22 |
Serializable interface, transient 예약어, FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream 예제 (0) | 2019.09.22 |