Java/네트워크 통신

[Java] 95. 1:1 양방향 통신 (서버 측)

Song hyun 2024. 5. 22. 14:43
728x90
반응형

[Java] 94. 1:1 양방향 통신 (서버 측)

1. 서버 측 시나리오 코드

 


1. 서버 측 시나리오 코드

(1) 양방향 통신 시에는 inputStream/outputStream 둘 모두가 필요하다.

 

(2) 서버측 준비물

-클라이언트 측의 연결 요청을 받을 서버 소켓

-포트 번호(0~65535)

 

(3) 5001의 포트 번호를 지닌 serverSocket을 선언, 초기화한다.

(4) serverSocket.accept()를 통해, 5001 포트번호의 클라이언트와 연결되는 소켓을 선언한다.

 

(5) inputStream-BufferedReader: socket을 통해 클라이언트 측으로부터 받은 데이터를 읽어들인다.

(6) outputStream-PrintWriter: socket을 통해 클라이언트에게 메세지를 보낸다.

이 때 auto flush를 true로 설정하면, 더욱 더 편리하게 데이터를 보낼 수 있다.

 

(7) try-catch-finally 문을 통해 socket과 serverSocket을 닫아준다.

1. 서버 측 시나리오 코드

-InputStream, OutputStream 둘 다 필요하다.

package ch03;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ClientFile {
	
	public static void main(String[] args) {
		
		// 클라이언트 측 준비물
		// 1. 서버 측 IP 주소와 포트 번호가 필요하다.
		// 2. 서버 측 소켓과 연결될 소켓이 필요하다.
		Socket socket = null;
		
		try {
			socket = new Socket("localhost",5001);
			PrintWriter writer = new PrintWriter(socket.getOutputStream(),true);
			writer.println("안녕! 반가워~");
			
			// 서버로부터 데이터를 받기 위한 입력 스트림이 필요하다.
			// 대상은 소켓이다.
			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String message=reader.readLine();
			System.out.println("서버 측 응답 : "+message);
			
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(socket != null) {
				try {
					socket.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

}

 

728x90
반응형