목차
1:1 양방향 통신
1. 서버측 코드 작성
인풋스트림, 아웃풋 스트림 둘다 필요하다
package ch03;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerFile {
public static void main(String[] args) {
// 준비물
// 1. 서버 소켓이 필요하다.
// 2. 포트 번호가 필요하다. ( 0 ~ 65535 까지 존재)
// 2.1 잘 알려진 포트 번호 : 주로 시스템 레벨 - 0 ~ 1023까지 사용
// 2.2 등록 가능한 포트 : 1024 ~ 49151까지
// 2.3 동적/사설 포트 번호 - 그 외 임시 사용을 위해 할당된다.
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(5001);
System.out.println("서버를 시작 합니다 - 포트 번호 : 5001 ");
socket = serverSocket.accept(); // while -->
System.out.println(">>> 클라이언트가 연결 하였습니다. <<<");
// 대상은 소켓이다 ( input stream ) 작업
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
// 1. 클라이언트에서 먼저 보낸 데이터를 읽는다.
// 실제 데이터를 읽는 행위가 필요 하다.
String message = reader.readLine();
System.out.println("클라이언트 측 메세지 전달 받음 : " + message);
// 2. 클라이언트 측으로 데이터를 보낸다.
// 대상은 소켓이다. (output stream) 작업
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); // auto flush
writer.println("난 서버야, 클라이언트 반가워"); // 줄바꿈 포함 메서드 안녕 --> 안녕\n
} catch (Exception e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2. 클라이언트 측 코드 작성
package ch03;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientFile {
public static void main(String[] args) {
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();
}
}
}
}
}
'Java > Java 유용한 클래스' 카테고리의 다른 글
1: N 소켓 양방향 통신 - 25 (0) | 2024.05.24 |
---|---|
1:1 양방향 통신(채팅 기본 기능 구현) - 24 (0) | 2024.05.24 |
1:1 단방향 통신 (클라이언트측) - 22 (0) | 2024.05.23 |
1:1 단방향 통신 (서버측) - 21 (0) | 2024.05.23 |
Socket 이란? - 20 (0) | 2024.05.22 |