Contents
Server Socket (서버 소켓)제가 돌아왔습니다.✌️
이론 너무 힘들어요. 도저히 읽어도 어려운 내용을 이해하는 일은 그 뒤가 보이지 않는 장애물을 넘는 것 같죠. 가까운 미래엔 이 모든 장애물들이 묘연해 질텐데 말입니다. 그럼 그때의 나를 생각하면 어떨까요? 🤔 지금의 막연한 좌절이 조금 아무렇지 않아보여요.
우린 타겟을 정하기 이전에 경로부터 알고 있어야 합니다. 당연한 소리입니다.
상대 경로(Relative Path) : 현재 작업 디렉토리를 기준으로 경로 정하는 것.절대 경로(Absolute Path) : 루트에서 부터 경로를 찾는것 윈도우 : C:\\workspace\\hello.txt 맥,리눅스 : /workspace/hello.txt
타겟을 이용해서 텍스트 파일을 찾고 만들어도 볼게요
package ex15; import java.io.*; public class StreamEx05 { public static void main(String[] args) { try { // 절대 경로와 상대 경로를 사용했습니다. 같은 타겟입니다. //BufferedReader br = new BufferedReader(new FileReader("D:\\workspace\\java_lec\\study\\src\\ex15\\hello.txt")); BufferedReader br = new BufferedReader(new FileReader("src\\ex15\\hello.txt")); String line = br.readLine(); System.out.println(line); // hello.txt 출력 // input.txt 파일을 만들고 텍스트를 입력합니다. // flush는 필수 입니다. 버퍼를 비워야 입력이 됩니다. BufferedWriter bw = new BufferedWriter(new FileWriter("input.txt")); bw.write("안녕"); bw.write("반가워\n"); bw.flush(); } catch (Exception e) { e.printStackTrace(); } } }

input.txt를 읽어볼까요.


! 주의사항 입니다. input.txt를 BefferedReader로 읽으면 다음과 같이 ‘안녕’ 까지만 읽게 됩니다. 이는 \n까지 데이터를 분리하여 읽기 때문입니다.
Server와 Client는 하는 일이 뭔가요?
Client(클라이언트) : 요청하기.
Server(서버) : 요청받기.
Port (포트 번호)
Port는 네트워크 통신에서 프로세스를 구분하기 위한 번호입니다. Client는 목적지 Port를 지정하여 특정 서버 프로세스에 접근, 서버는 해당 Port로 들어오는 요청을 특정 프로세스로 라우팅하게 되는 것이였던 것이였던 것이었습니다.
요약 → 어느 프로그램에 접근할 지 port로 결정.
(HTTP의 표준 Port : 80, 암호화된 Port : 443)
Server Socket (서버 소켓)
Server Socket과 Client Socket이 연결이 되면 새로운 Socket을 생성하여 해당 Client와의 통신을 담당하고 Server Socket과의 연결은 종료됩니다. 생성된 Socket은 Server Socket과는 독립적으로 동작합니다.😒❔ Server Socket은 여러 Client와 동시에 연결을 처리할 수 있어야 합니다. 만약 Server Socket이 여러 Client와 연결을 처리한다면, Client간의 간섭이 발생하거나 충돌할 수 있습니다. 따라서 새로운 Socket을 생성하여 각 Client와 독립적으로 통신하는 Multi-Connection(다중 연결)구조로 동작하는 것입니다.
TMI이지만 알아가기
∴Client Socket의 수는 Thread의 수와 같습니다. 전체 Socket의 수는 + 1(Server Socket) 이 됩니다.
Socket은 모두 Port를 가지고 있고, 연결이 끊기면 비어있는 포트로 연결됩니다.
서버는 통신 경로가 직접 연결 돼 있어야 합니다.
direct로 연결해야 Server가 될 수 있습니다. 일반적으로 네트워크 장비나 중개 서버가 연결되어 있기 떄문에 Server가 되기는 틀려먹었습니다. (wifi 공유기 등 쓰면 탈락)
(Server도 수저가 필요합니다.)
→ 우린 콤푸타는 서버로 사용될 수 없기에 Loopback을 이용해 시뮬레이션 해야합니다.
Loopback (루프백)
🖥️⌨️ : 어ㅆ, 내가 서버였네?
루프백은 컴퓨터가 자기 자신에게 데이터를 전송하는 것을 의미합니다.
루프백 인터페이스는 특정 IP 주소(일반적으로 127.0.0.1)를 사용하여 컴퓨터 내부에서 네트워크 통신을 시뮬레이션하는 데 사용됩니다.
이제 프로그래밍해 봅시다. 화이팅
Share article