inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

운영체제 공룡책 강의

06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4)

자바 serversocket 관련 질문입니다.

152

dddkh

작성한 질문수 6

0

교수님 안녕하십니까, 강의를 수강하다 이해가 안 가는 부분이 있어 질문드립니다.

 

06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 강의 30:57 부분에서 출력 스트림으로 데이터가 나가고 있는 상황이어도 socket은 비어 있으니, 다른 클라이언트의 요청을 받을 수 있다고 하셨는데 주어진 코드로 이 과정이 가능한지 의문이 들어 질문 드립니다. 해당 코드에서 계속 출력 스트림을 열어놓으려면 client.close() 부분을 제거해야 될 것 같은데 이러면 기존의 client에 새로 요청 들어온 client가 덮어 씌어 지는 건가요..?

 

좋은 강의 감사드립니다.

답변 기다리겠습니다:)

운영체제 동시성

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. dgfh님.

자바에서 ServerSocket과 클라이언트의 연결 관리는 다소 복잡할 수 있습니다. 여러분이 언급하신 부분에 대해 조금 더 설명을 드리겠습니다.

  1. 클라이언트 소켓 관리를 위한 코드 구조:
    서버가 여러 클라이언트의 요청을 처리할 수 있는 원리는 새로운 연결 요청이 들어올 때마다 accept() 호출을 통해 새 클라이언트 소켓 객체를 생성하는 데 있습니다. 이렇게 생성된 소켓은 별도의 출력 스트림을 가집니다.

  2. 클라이언트 관리의 이슈:
    client.close()를 제거하시면, 소켓이 닫히지 않기 때문에 스트림이 열려 있는 한 클라이언트와 서버 간의 연결이 유지됩니다. 이는 여러 클라이언트를 동시에 지원하기 위해 대부분의 서버 구현에서는 각 클라이언트 연결을 새로운 스레드에서 처리하게끔 코드를 구성합니다. 따라서 기존 클라이언트를 새 클라이언트가 덮어쓰지 않습니다. 대신 이 새 클라이언트는 각각의 개별 스레드를 통해 별도로 관리됩니다.

  3. 멀티클라이언트 지원:
    멀티 클라이언트를 지원하기 위해 각 클라이언트 요청에 대해 새로운 스레드를 생성하여 처리하는 방식이 일반적입니다. 이럴 경우, 서버는 계속해서 accept()를 호출하고, 각각의 클라이언트 연결이 독립적으로 관리됩니다.

자바에서 ServerSocket의 활용법에 대해 더 알아보시려면 아래의 유사한 주제에 대한 설명을 참고하시는 것도 좋습니다.
- 06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 에 그림 3.16 3.17 실습 오류

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

컨텍스트 스위칭과 PCB

0

146

1

퀴즈 답지

0

215

1

운영체제 공룡책 사려고하는데 원서랑 번역본 중에 어느걸 더 추천하시나요?

0

516

1

java 소켓 통신 예제 질문

0

257

1

코드가 실행이 안됩니다

0

279

1

강사님. 수료 기준이 있을까요?

0

643

1

강의 ppt 제공

0

502

1

강의에서 사용된 Source code는 어디서 볼 수 있을까요?

0

329

1

퀴즈 1번 2번

0

416

2

24:35초에 설명하는 time-sharing이 책에서 다루는 내용과 달라요.

0

396

1

자바 Bounded-Buffer 코드 질문 있습니다.

0

305

0

window10 이 아니면 안되나요??

0

692

1

피터슨 알고리즘과 compare_and_swap 명령어 질문입니다

0

581

1

chapter3. Processes(1) pid_t 정의되지 않은 타입

0

655

1

스택 영역의 크기는 정적인가요? 동적인가요?

0

1510

1

코드를 실행할 떄

0

348

1

wsl 오류

0

395

2

ubuntu 에러가 뜹니다.

0

2169

1

멀티 프로세싱 vs 멀티 프로그래밍

1

1259

1

데드락 질문

0

388

1

semaphore 로우레벨 코드 질문

0

506

1

1.운영체제가 뭐길래 7분 58초 질문이요

0

749

1

데드락 관련 질문입니다.

1

515

1

좀비 프로세스와 고아 프로세스

1

1115

1