안녕하세요. 허언증입니다.
소켓프로그램에서 한 번에 보낼수있는 데이터 양이 10인데
내가 보내야할 데이터의 크기가 12일경우 10을 먼저 보내고 2를 나중에 보낸다.
이과정에서 필요한 코드들을 클래스화 함
코드보기 전 먼저 읽고 흐름을 파악하고 코드로 이해하세요!
보내는 입장
: 보내기 전 메모리를 할당 (작업에 사용할) > 전송하는 함수 , 전송이 완료되었는지 확인하는 함수 필요
전송하는 함수
: 전송 위치(메모리상) / 전송 될 데이터의 크기 => 위치를 확인후 데이터 전송
전송확인 함수
: 초기에 정한 데이터 전체 크기랑과 보내진 총 데이터 크기를 비교
받는 입장
: 보내는 사람으로부터 데이터를 받고 > 데이터를 합치는 함수 , 데이터를 다 받고 합쳐진 데이터 주소를 반환 하는 함수
나눠서 보내진 데이터를 합치는 함수
:
전송 완료후 하나로 합쳐진 데이터 시작주소
:
헤더파일
Code : 13 ~ 14
객체 생성자 , 객체 파괴자 < TW_ExchangeManager(); / ~TW_ExchangeManager(); >
:객체 생성자는 변수 초기화 / 객체 파괴자는 함수가 종료후 메모리에 남아있는 데이터 제거
Code : 19
메모리 할당 < char* MemoryAlloc(int a_data_size); >
:수행을 하기위해선 메모리에 할당을 하고 데이터를 주고 받으면서 처리하기 위해 할당!
Code : 20
:사용되는 메모리 제거
Code : 23~24
inline int GetTotalSize() { return m_total_size; } / inline int GetCurSize() { return m_cur_size; }
:할당된 메모리의 크기 반환 / 현재 작업중인 메모리의 위치를 반환
inline이 뭐야? Click!! (제작 중...)
Code : 28~35
메시지 전송 클래스 - int GetPosition(char** ap_data, int a_data_size = 2048)
: 보내는 클래스 생성
Code : 37~45
메시지 받는 클래스 - int AddData(char* ap_data, int a_size);
: 받는 클래스 생성
cpp파일
Code : 39~58
: 이중포인터를 통해 값을(주소위치) GetPosition함수를 통해 크기도 넘겨 받는다
Return은 하나지만 입력 받음을 통해 값을 받게 된다.
참고 : 김성엽님 블로그
'# Network > [ Coding ]' 카테고리의 다른 글
[허언증/네트워크] UDP - Server/Client 소켓통신 (feat. C++/Data GramSocket) (1) | 2019.12.05 |
---|---|
[허언증/네트워크] 소켓 통신 프로그래밍 예제 (0) | 2019.11.25 |