Coding 공부/Java

[Java_Example] 서버 일대일 채팅 연습 문제, 수식 계산 서버 연습 문제

CBJH 2024. 3. 13.
728x90
반응형

1. 서버 일대일 채팅 연습문제

  1.1 서버 클래스

  • 서버 소켓 객체를 생성한다. (네트워크 연결을 위해선 서버 소켓과 클라이언트 소켓이 필요하다. 연결은 스트림으로..)
  • 소켓 객체는 서버 객체에서 accept()메서드가 실행되어 클라이언트 소켓이 연결되면 그 소켓을 받아온다(얕은 복사)
  • Buffered Reader, Writer객체를 생성해 입출력 스트림을 열어준다.(데이터 이동 통로)
  • 입력으로 받은 문자열을 sysout으로 화면에 출력한다.
  • 아웃 스트림을 통해 write(); 메서드로 키보드로 입력한 문자열을 보낸다. 
  • flush()로 스트림 버퍼에 남아있는 모든 문자열을 전송한다. 일반적으론 버퍼 스트림은 개행문자 "\n"가 나오기 전까지 데이터를 모아 보낸다. 

 

  1.2 클라이언트 클래스

  • 클라이언트 소켓을 생성한다. "localhost"는 컴퓨터 자신의 IP주소인 127.0.0.1을 의미한다. 포트는 0~1023 사이가 아니면 사용 가능하다.
  • 클라이언트 소켓을 생성하면 서버 객체에서 accept()를 받아 소켓끼리 네트워크가 연결된다.
  • Buffered Reader, Writer 객체를 생성해 스트림을 열어준다.
  • 키보드에서 문자열을 입력받아 아웃 스트림을 통해 write()메서드로 문자열을 서버에 전송한다.
  • flush()로 아웃 스트림에 남아있는 버퍼를 모두 서버에 전송한다.
  •  

콘솔창에서 실행한 결과

 

 

2. 수식 계산 서버

  2.1 서버 클래스

  • 수식 계산을 위한 메소드 calc를 만들었다.
  • 입력 스트림에서 받은 문자열을 StringTokenizer 키워드를 사용해 띄어쓰기 기준으로 토큰으로 나눈다.
  • 토큰이 3개 일 때만 첫번째 토큰을 정수형, 두번째 토큰을 연산자 문자열, 세번째 토큰을 정수형으로 변환해 지역변수에 저장한다.
  • 연산자 기호에 따라 switch-case문으로 계산하여 문자열로 바꾸어 return 한다.
  • 입력스트림에서 받은 문자열을 바로 모니터에 출력하는 것이 아니라 45줄로 String res = calc(inputMessage);로 계산값을 반환받아 출력한다.

 

  2.2 클라이언트 클래스

  • 채팅 연습문제 클라이언트 클래스와 동일하다.

콘솔창에서 실행한 결과

댓글