Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- Java
- JAVA객체지향
- 메서드
- this예약어
- 연관관계
- 상수
- for문
- OPP개념
- 컴파일
- 반복문
- While
- break문
- 시스템 환경 변수 편집
- 메서드 오버로딩
- 인텔리제이 한글 깨짐 해결법
- Java데이터 타입
- 접근제어지시자
- java변수
- function
- 생성자
- JAVA기초
- Thread
- 형 변환
- 자바 멀티스레딩
- 집합관계
- continue문
- 포함관계
- multi-threading
- 인텔리제이 기초 설정
- IntelliJ IDEA
Archives
- Today
- Total
최원종의 개발 블로그
(소켓 - 2) 1:1 단방향 통신 - 서버 본문
단방향 통신
단방향 통신:
클라이언트 ──메시지 전송──► 서버
(받기만 함)
서버 코드에서 필요한 것
1. ServerSocket : 포트를 열고 연결 요청을 기다림
2. Socket : 연결된 클라이언트와 실제 통신
3. BufferedReader : 클라이언트가 보낸 메시지를 읽음
-코드
package server.ch01;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerFile {
public static void main(String[] args) {
//소켓 통신을 하기 위한 서버측 테스트 코드1
//(내 IP 주소 당연히 알고 있음)
//1. 포트 번호를 열고 클라이언트에 연결 요청을 기다리는 서버 소켓
//Ip : 192.168.4.21
try (ServerSocket serverSocket = new ServerSocket(5000)) {
//accept() - 클라이언트가 연결할 때 까지 이 줄에서 멈춤(블로킹)
Socket clientSocket = serverSocket.accept();
//2. 코드가 아래로 안내려감 블로킹)
System.out.println("클라이언트가 연결 됐습니다.");
//3. 소켓 객체가 생성이 되면 (accept()) 이 소켓이 클라이언트 소켓과 연결되어 있는 소켓
// I/O 단원에서 배운 체인 그대로
InputStream input = clientSocket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
//4.클라이언트가 보낸 한 줄을 읽음
String message = reader.readLine();
// 내 서버 측 콘솔창에 출력
System.out.println("클라이언트 메세지 : " + message);
//5. 통신 종료 ,연결 해제
clientSocket.close();
} catch (IOException e) {
System.out.println("오류 발생 : 포트 5000 이미 사용 중이거나 연결에 실패 했습니다. ");
}
}
}
accept()는 블로킹(Blocking) 메서드
클라이언트가 연결할 때까지 그 줄에서 실행을 멈추고 기다리는 것
서버 실행 흐름:
new ServerSocket(5000) → 실행됨
serverSocket.accept() → 여기서 멈춤... (클라이언트 기다리는 중)
클라이언트 연결됨!
clientSocket = ... → 이제 다음 줄 실행
스트림 체인 사용(I/O단원에서 배운 스트림 체인이랑 같음)
키보드 : System.in (바이트) → InputStreamReader (문자) → BufferedReader (readLine())
소켓 : socket.getInputStream() (바이트) → InputStreamReader (문자) → BufferedReader (readLine())
실행 방법
1. ServerFile 실행
→ "서버 시작 - 포트 5000 에서 대기 중..." 출력 후 대기
2. 소켓-3 에서 만들 ClientFile 실행
→ "클라이언트가 연결됐습니다." 출력
→ "클라이언트 메시지 : Hello, Server!" 출력
클라이언트 없이 서버만 실행하면 accept() 에서 계속 기다립니다.
강제 종료하려면 IDE 정지 버튼 또는 Ctrl + C 를 누르세요.
핵심 요약
ServerSocket(5000) → 포트 5000 을 열고 연결 대기
serverSocket.accept() → 클라이언트가 연결할 때까지 블로킹
socket.getInputStream() → 17단원 System.in 과 같은 역할
InputStreamReader → BufferedReader 체인으로 감싸기
실행 순서 → 반드시 서버 먼저, 클라이언트 나중'Java > JAVA 유용한 클래스' 카테고리의 다른 글
| (소켓 - 4) 1: 1 양방향 통신 (0) | 2026.03.27 |
|---|---|
| (소켓-3) 1:1 단방향 통신 -클라이언트 (0) | 2026.03.26 |
| 소켓(Socket) (0) | 2026.03.26 |
| 파일 복사 기능 만들기 (0) | 2026.03.25 |
| 문자 기반 스트림 /보조 스크림 실습 (0) | 2026.03.25 |
