강의

멘토링

커뮤니티

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

y_y님의 프로필 이미지
y_y

작성한 질문수

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

소켓 프로그래밍 입문 #2

소켓 프로그래밍과 관련해서 질문이 있습니다.

작성

·

411

4

소켓 프로그래밍을 처음 접해봐서 몇 가지 궁금한점이 있습니다. 

카카오톡과 같은 앱을 이용해서 다른 사람들과 네트워크를 이용해서 통신하는 것들이 가능한 이유가 카카오톡 앱에서소켓 프로그래밍을 활용했기 때문인가요 ???

즉, 네트워크를 통해서 통신하는 모든 프로그램이 소켓 프로그래밍을 활용한 것인가요 ???

그리고 이러한 소켓 프로그래밍은 일련의 틀이 정해져있는건지 궁금합니다. 예를 들어서 소켓 생성하고 바인드하고 이러한 과정은 거의 약속처럼 사용되는 건가요 ?

음.. 그러니까 어떤식으로 사용해야되는지 일반화가 되어 있는 작업인가요 ?

답변 1

5

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

카카오톡과 같은 앱을 이용해서 다른 사람들과 네트워크를 이용해서 통신하는 것들이 가능한 이유가 카카오톡 앱에서소켓 프로그래밍을 활용했기 때문인가요 ???
즉, 네트워크를 통해서 통신하는 모든 프로그램이 소켓 프로그래밍을 활용한 것인가요 ???

반은 맞고 반은 아닙니다.
네트워크 통신은 기본적으로 응용 프로그램에서 멋대로 할 수는 없고
커널 (운영체제)한테 요청을 해서 간접적으로 할 수 있는데,
그렇게 운영체제한테 통신을 받고 보내달라고 부탁을 하는 것이 결국 소켓 프로그래밍 입니다.
그러니 네트워크 통해 통신하는 모든 프로그램이
'언젠가'는 소켓을 활용한 것은 맞습니다.

그렇다고 앱 개발자들이 직접 소켓 프로그래밍을 꼭 해야 하는 것은 아니고
특수한 상황이 아니라면 오히려 그럴 확률은 적습니다.
예를 들어 NodeJS 같은 웹 프레임워크를 사용하면
로우레벨 단계에서 일일히 연결하고, 패킷을 보내준 다음, 연결을 끊는 등의 작업을
숨겨놓고 우린 함수 호출 하나로 편리하게 모든 작업을 할 수 있게 해주기 때문입니다.
그렇게 로우레벨 기능들을 조립해서 만든게 [프레임워크]라는 것이고
웹 통신에 맞게 만들어진게 [웹 프레임워크]입니다.
참고로 웹은 딱 한번 요청을 보내고/받은 다음,
연결을 끊어주는 TCP 통신이라고 보시면 됩니다.
반면 온라인 게임처럼 계속 연결을 유지해서 지속적으로 데이터를 교환이 필요한 경우
직접 소켓 프로그래밍을 이용해 우리한테 맞게 만들어줘야 합니다.

그리고 이러한 소켓 프로그래밍은 일련의 틀이 정해져있는건지 궁금합니다. 예를 들어서 소켓 생성하고 바인드하고 이러한 과정은 거의 약속처럼 사용되는 건가요 ?
음.. 그러니까 어떤식으로 사용해야되는지 일반화가 되어 있는 작업인가요 ?

네 그렇습니다. TCP냐 UDP냐에 따라 살짝 step이 다르지만 기본 틀은 비슷합니다.

y_y님의 프로필 이미지
y_y

작성한 질문수

질문하기