강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

장재범님의 프로필 이미지
장재범

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

소켓 프로그래밍 입문 #2

프로그램 진행되는 과정이 맞는지 확인부탁드립니다!!

작성

·

441

0

client에는 socket.Connect(endPoint)

coreserver에는 clientSocket = listenSocket.Accept()

 

이 부분에서 쓰레드들이 서로를 기다리는 것인가요?

client의 쓰레드가 혹은 coreserver의 쓰레드가 먼저 도착해도 상대가 자신을 부를 때(?)까지 기다리다가 서로 확인(connect, accept 둘 모두 실행될 때)이 되면 서로 다음으로 넘어가는 것인가요?

 

(디버그했을 때는 가시적으로는 이렇게 보여서 맞는지 확인차 질문올립니다!)

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

Accept은 블로킹 방식의 함수라서, 쓰레드가들이 서로 기다리고 그런 개념이 아닙니다.
서버 구동중인 쓰레드는 실행권을 반납하고,
운영체제한테 관리 권한이 넘어가서 클라가 접속하길 기다리고 있는 상태죠.
서버는 네트워크 뿐 아니라 운영체제에 대한 이해도 필요하기 때문에
이 부분은 직접 깊이 이해하려 하지 마시고 코드 흐름에 집중하시는게 좋습니다.

장재범님의 프로필 이미지
장재범
질문자

아하..! 그렇군요 감사합니다!

이런 내용은 운영체제 관련 책 또는 대학교 운영체제 강의 시작 때 배울 수 있는건가요?

아직 2학년이여서 운영체제를 안배워서 질문남깁니다! 항상 감사합니다

 

그리고 혹시 블록킹 함수인지 논블로킹 함수 있지 비쥬얼 스튜디오에서 확인할 수 있는 방법이 있나요? 문서를 보는 방법 뿐일까요?

장재범님의 프로필 이미지
장재범

작성한 질문수

질문하기