C++/CLI용의 클래스 라이브러리 프로젝트를 생성합니다.
저는 HalfNetwork_NET 이라는 이름으로 만들었습니다.
프로젝트 설정 하기
앞서 C++에서 만든 HalfNetwork용 lib 파일을 사용하기 위해 프로젝트 속성에서 몇 가지를 설정합니다.
1. HalfNetwork 프로젝트의 헤더 파일을 포함합니다.
2. lib 파일의 위치를 설정합니다.
이것으로 프로젝트 설정은 끝났습니다.
코딩 하기
HalfNetwork_NET 프로젝트는 아주 간단하게 만들 생각이므로(만약 실전에서 사용한다면 사용할 프로젝트에 맞게 필요한 기능을 만들어야겠죠) 저는 총 6개의 파일만 사용합니다.
자세한 내용은 첨부되는 코드를 직접 보시기 바라며 여기서는 간단한 설명만 하겠습니다.
Stdafx.h
여기에서는 HalfNetwork를 사용하기 위해 필요한 파일을
포함합니다.
#include <stdio.h>
#include <string>
#include <vector>
#include <ace/Singleton.h>
#include <ace/ace.h>
#include "HalfNetworkType.h"
#include "HalfNetworkDefine.h"
ErrorCode.h
에러 코드 값을 선언한 파일입니다.
참고로 enum을 사용하지 않고 literal을 사용했는데 이유는 enum을 정의할 때 타입을 지정했는데도 사용할 때 타입캐스팅을 요구해서(왜 그런지 잘 모르겠네요) 사용하기 편하기 위해서 C++에서 const와 같은 역할을 할 literal을 사용했습니다.
ServerNetwork.h, ServerNetwork.cpp
아주 단순하게 네트웍으로 리모트에 Send하는 기능만 가지고 있습니다.
HalfNetwork의
Send를 사용하기 위해서는 네트웍으로 보낼 데이터를 ACE_Message_Block 객체를
만든 후 복사합니다.
bool ServerNetwork::Send( const DWORD StreamID, array<Byte>^ SendData )
{
int nLength = SendData->Length;
pin_ptr<Byte> pData = &SendData[0];
ACE_Message_Block* block = NetworkInstance->AllocateBlock( nLength );
block->copy( (const char*)pData, nLength );
NetworkInstance->SendRequest( StreamID, block );
pData = nullptr;
return true;
}
파라미터 중 StreamID는 연결된 세션의 인덱스이고 SendData는 보낼 데이터입니다.
이번 회는 여기까지 하고 나머지는 다음 회에 이어서 설명하겠습니다.
'C++/CLI' 카테고리의 다른 글
[Step. 25] 닷넷에서 HalfNetwork를 사용하자 – 6(마지막) (4) | 2011.01.31 |
---|---|
[Step. 24] 닷넷에서 HalfNetwork를 사용하자 – 5 (2) | 2011.01.24 |
[Step. 22] 닷넷에서 HalfNetwork를 사용하자 – 3 (4) | 2011.01.10 |
[Step. 21] 닷넷에서 HalfNetwork를 사용하자 - 2 (0) | 2010.12.30 |
[Step. 20] 닷넷에서 HalfNetwork를 사용하자 - 1 (2) | 2010.12.27 |