괴발개발

[코드 리뷰]Echo Client+Server 본문

BACK END/JAVA

[코드 리뷰]Echo Client+Server

dinoelll 2023. 3. 17. 09:03
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServer코드리뷰 {

	public static void main(String[] args) 
			throws Exception{
		
		//1) 서버와의 연결을 위해서 new serversocket을 통해 socket 생성하고   /그리고 포트는 겹치지 않도록5555로 지정해줍니다.
		ServerSocket server = new ServerSocket(5555);
		
		//2) while문을 통해서 요청이 올때마다 받을 수 있도록 해주었고, 조건은 true로 해주어서 계속 실행할 수 있도록 했습니다.
		while(true){
			
			System.out.println("요청 대기중...");
			
			//3)준비한 소켓 server에 .accept 메서드를 이용해서 (클라이언트) 요청을 받아줍니다. 그리고 소켓을 반환하기 때문에 소켓에 넣어줍니다.
			Socket socket =  server.accept();
			System.out.println("접속 수락");
			
			
			//4) 다음은 클라이언트에서 들어온 요청을 확인하기 위해 inputStream를 사용할꺼구요.. 소켓에.getInputStream 메서드를 써서 inputstream을 
			//5) 만들어줍니다.
			
			InputStream is = socket.getInputStream();
			
			//5) 그리고 문자열 이상의 다양한 정보를 받기 위해서  보조 스트림인 ObjectInputStream을 만들어주고 주스트림인 is를 넣어줍니다.
			ObjectInputStream ois = new ObjectInputStream(is);
			
			//6) ois에 readUTF를 통해 스트링 정보를 읽고 스트링타입의 msg에 저장합니다.
			//7) 그리고 콘솔에 client를 보낸값으로 msg를 출력합니다.
			String msg = ois.readUTF();
			System.out.println("client 에서 보낸 값: "+msg);
			
			
			//8) Hello Client 라고 응답 하기 위해서 소켓에.getoutputStream 메서드를 사용해 아웃풋 스트링을 준비해줍니다.
			OutputStream os = socket.getOutputStream();
			
			//9) 마찬가지로 다양한 정보를 다 담아주기 위해  보조스트림 objectOutputstream을  준비하고 주스트림 os를 넣어줍니다.
			ObjectOutputStream oos = new ObjectOutputStream(os);
			
			//10) 그리고 oos에 writeUTF메서드를 써서 String타입의 해당 문자열을 써줍니다.
			oos.writeUTF("Hello Clinet");
			//11)그리고 oos.flush를 이용해 깨끗히 비워줍니다. 
			oos.flush();
			
			//12) 마지막 자원정리를 위해서 ois.close를 사용해 ois를 닫아주고, oos.close를 이용해 oos도 닫아줍니다. 그리고 소켓도 닫아줍니다.
			//자원정리 // 3:0:29 뭐뭐 서버쪽에서도 뭐 어쩌구 닫고 뭐 해야한다?
			ois.close();
			oos.close();
			socket.close();
		
		}
		//4. 콘솔창에 addr에 주소랑 열어주기
		//server.close();
public class EchoClient코드리뷰 {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		
		
		//1) 소켓 생성과 서버접속 요청을 하기 위해서 socket에 new socket으로 소켓을 만들어주고  , 
		//2)String host 주소에는 내 자신인 localhost를 넣어주고 , 포트는 서버에서 받아주기로 했는 5555로 지정해줍니다.
		Socket socket = new Socket("localhost", 5555);
		System.out.println("접속 성공");
		//2) server에 Hello Server라는 요청을 보내기 위해서,, os에 socket.getOutputStream 메서드를 이용해 outputStream을 준비해 줍니다. 
		//3) 그리고 문자열 이상의 다양한 정보을 보내기 위해서 보조스트림인 objectoutputStream를 oos로 준비해줍니다. 
		
		OutputStream os = socket.getOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(os);
		
		//4) oos.writeUTF메서드를 이용해서 helloserver라는 문자열을 write해주고
		oos.writeUTF("Hello Server");
		//5) flush를 이용해 깨끗히 objectoutputStream을 비워줍니다.
		oos.flush();
		
		
		
		//6) 요청에 대한 응답확인으로 hello client를 출력하기 위해서 inputStream을 준비합니다.
		//6)socket. getInputStream() 을 이용해 is에 inputStream을 준비하고 
		InputStream is = socket.getInputStream();
		//7) 다양한 정보을 받기 위해서 보조스트림인 objectinputStream을 준비하고  주스트림인 is를 태웠습니다.
		ObjectInputStream ois = new ObjectInputStream(is);
		
		//8) ois에 readUTF메서드를 를 통해  서버에서 부터 온 문자열을 읽어주고 string 타입 msg에 저장해줍니다.
		String msg = ois.readUTF();
		//9)그리고 ststem.out을 통해 서버에서 보내온 값을 msg로 출력해줍니다.
		System.out.println("서버에서 보내온 값 :" + msg);
		//10) 다쓴 자원을 반납하기 위해서 ois도 닫아주고, oos도 닫아줍니다.
		ois.close();
		oos.close();
		
		//3. 소켓 종료
Comments