본문으로 바로가기

[TCP/IP]소켓을 이용한 EchoServer

category JAVA 2018. 12. 14. 14:04
반응형

EchoServer 란 ?

- 클라이언트가 전송해 준 데이터를 받고 받은 데이터를 그대로  클라이언트에게 전송해주는 서버



package socket2.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class server2 { ServerSocket server = null; int port = 54; Socket socket = null; InputStream inputstream = null; InputStreamReader streamreader = null; BufferedReader buffer = null; OutputStream outputstream = null; OutputStreamWriter streamwriter = null; BufferedWriter bufferwriter = null; PrintWriter pw = null; String receiveMsg = null; //Client의 받은 문자열 저장 /** * * @throws IOException 예외 던진다 * ServerStart() 호출한 다른 메소드에게 예외 던져짐 */ public void ServerStart() throws IOException{ try { server = new ServerSocket(port); while(true){ System.out.println("-- 접속 대기 --"); socket = server.accept(); //클라이언트가 접속 소켓반환 System.out.println(socket.getInetAddress() + "로 부터 연결요청이 들어옴"); receiveData(); ServerStop(); sendStop(); } } catch (Exception e) { e.printStackTrace(); ServerStop(); } } public void ServerStop() throws IOException { inputstream.close(); streamreader.close(); buffer.close(); server.close(); } public void receiveData() throws IOException { try { inputstream = socket.getInputStream(); streamreader = new InputStreamReader(inputstream); buffer = new BufferedReader(streamreader); outputstream = socket.getOutputStream(); streamwriter = new OutputStreamWriter(outputstream); pw = new PrintWriter(new OutputStreamWriter(outputstream)); bufferwriter = new BufferedWriter(streamwriter); while((receiveMsg = buffer.readLine() ) != null) { System.out.println("Client로부터 받은 문자열:" + receiveMsg); pw.println(receiveMsg); //받은메시지 출력 pw.flush(); //버퍼 비움 } } catch (Exception e) { e.printStackTrace(); ServerStop(); } } public void sendStop() throws IOException { bufferwriter.close(); streamwriter.close(); outputstream.close(); pw.close(); } public static void main(String[] args) throws IOException{ server2 serverstart = new server2(); serverstart.ServerStart(); } }


반응형