반응형

 

짧은 영어로 번역하는것이라 오역, 의역이 있을수 있습니다.

좀더 정확한 정보를 얻거나 실력을 향상시키실 분들은 해당 블로그에 직접 가셔서 여러번 읽어보시길 바랍니다.

 

 

출처  : https://gafferongames.com/post/sending_and_receiving_packets/

 

Sending and Receiving Packets | Gaffer On Games

Introduction Hi, I’m Glenn Fiedler and welcome to Networking for Game Programmers. In the previous article we discussed options for sending data between computers and decided to use UDP instead of TCP for time critical data. In this article I am going to s

gafferongames.com

 

BSD 소켓

당신이 지닌 일종의 BSD소켓들에 기반한 사용 가능한 기본소켓 레이어 현대 플랫폼에 대해서 

 

BSD 소켓들은 "socket", "Bind", "SendTo" 그리고 "RecvFrom"같은 간단한 함수를 통해 다뤄진다.

물론 너가 원한다면 해당 함수들을 직접 사용할 수 있지만,

이것은 각 플랫폼들이 약간씩 다르기 때문에 플랫폼 독립적인 코드로 유지하기란 어려운 일이다.

 

그렇기 때문에 내가 최초로 당신에게 기본 소켓의 사용을 설명하기 위해 BSD 소켓 예제코드를 보여줬을 지라도,

우리는 BSD 소켓들을 직접 사용하진 않을 것이다.

우선 우리는 우리가 모든 방법으로 추상화 할 수 있는 클래스들의 모음의 모든 소켓기능을 다루고 있다.

이것은 우리가 플랫폼 독립적인 코드를 쓰는 것을 좀더 쉽게 만들어 줄 것이다.

 

 

플랫폼 사양

 

우선 정의를 설정하자 그러면 우리는 현재 우리의 플랫폼이 무엇인지 탐지할 수 있고,

소켓들이 다른 플랫폼으로부터 약간의 다른점을 다룰 수 있다.

 

    // platform detection

    #define PLATFORM_WINDOWS  1
    #define PLATFORM_MAC      2
    #define PLATFORM_UNIX     3

    #if defined(_WIN32)
    #define PLATFORM PLATFORM_WINDOWS
    #elif defined(__APPLE__)
    #define PLATFORM PLATFORM_MAC
    #else
    #define PLATFORM PLATFORM_UNIX
    #endif

 

이제 소켓에 적당한 헤더를 include 해보자.

플랫폼 사양에 맞는 헤더파일들이기 때문에, 우리는 그 플랫폼에 맞는 다른 파일셋들을 include할 수 있다.

#if PLATFORM == PLATFORM_WINDOWS

        #include <winsock2.h>

    #elif PLATFORM == PLATFORM_MAC || 
          PLATFORM == PLATFORM_UNIX

        #include <sys/socket.h>
        #include <netinet/in.h>
        #include <fcntl.h>

    #endif

 

 

반응형
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함