Socket 및 In/Out stream 다루는 부분을 중점적으로 확인
Socket과 InputStream, OutputStream을 사용한다는 것을 기억.
ex)
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 |