본문 바로가기

언어공부/Java

자바 - TCP를 이용한 에코 서버 & 클라이언트 작성

자바 - TCP를 이용한 에코 서버&클라이언트 작성에 대해서 알아보자

TCP를 이용한 에코 서버 & 클라이언트

 

 

1. 서버 측의 ServerSocket이 먼저 특정 포트 번호를 열고 대기하고 있는다.

2. 클라이언트 측 Socket 클래스가 생성할 때 서버 측 IP주소와 지정한 포트 번호를 지정하면

3. 서버 측 프로그램에서는 대기 중인 ServerSocket의 accept 메소드가 접속을 요청한 클라이언트 측 소켓 객체를 반환한다. 서버 측 프로그램에서 이렇게 반환된 Socket 객체로 클라이언트 측의 Socket객체와 통신을 한다.

 


ServerSocket 클래스의 주요 메소드

 

  • ServerSocket(int port) : 클라이언트 요청을 받아들일 포트번호를 갖고 ServerSocket 객체 생성
  • Socket accept() : 클라이언트의 요청을 받아 들인 다음 Socket 객체 생성해서 반환
  • void close() : 서버 소켓 닫음

 

Socket 클래스의 주요 메소드

 

  • Socket(String host, int port) / Socket(InetAddress addr, int port) : host는 접속할 서버의 IP번호, port는 접속할 포트 번호, addr: 접속할 서버의 InetAddress 객체
  • InputStream getInputStream() : 현재 소켓과 관련된 InputStreram 객체 반환
  • OutputStream getOutputStream() : 현재 소켓과 관련된 OutputStream 객체 반환
  • void close() : 소켓 닫기
  • InetAddress getInetAddress() : 소켓에 연결된 원격 컴퓨터의 InetAddress 객체 반환
  • InetAddress getLocalAddress() : 소켓에 연결된 지역 컴퓨터의 InetAddress 객체 반환
  • int getPort() : 소켓에 연결된 컴퓨터의 포트 번호 반환
  • int getLocalPort() : 소켓에 연결된 지역 컴퓨터의 포트 번호 반환

 


에코 서버 만들기

 

 

cmd 실행 화면

 


에코 클라이언트 만들기

 

 

클라이언트 실행 시 서버가 먼저 실행되어 있어야 한다. (또한 서버와 클라이언트의 포트번호가 같아야한다.)

 

클라이언트만 실행될 때 연결 오류

 

서버 먼저 실행 후 클라이언트 실행

 


서버

 

클라이언트가 실행되면 클라이언트로부터 아이피 주소를 얻어 출력한다.

클라이언트로부터 받은 데이터를 다시 클라이언트로 전달한다. (에코)

 

 클라이언트

 

클라이언트에서 입력한 문자가 서버로 전달되어 다시 클라이언트로 반환되는 것을 확인할 수 있다.

 

클라이언트

 

quit문자를 전달받으면 서버는 종료된다.