오랜만에 프로그래밍 카테고리에 게시물을 포스팅하네요 ^^;;


예전에 VC++ 용으로 만들어두었던 레퍼런스 클래스가 있었습니다만, 최근 C# 코딩을 더 많이 하는 관계로

오랜만에 레퍼런스를 재정비 하여 C#용 레퍼런스 클래스를 작성했습니다.


C# 전용 레퍼런스로 넘어오며 가장 큰 변경점이라면...

이전에는 소스코드를 복&붙 하여 쓰도록 해놨던것을 클래스 라이브러리로 변경하여, 앞으로 C# 프로젝트에서 사용 시 DLL 파일만 복&붙 하면 쓸 수 있도록 수정하였습니다.


또한, TCP/IP와 UDP 소켓 통신의 경우 기존 레퍼런스에서는 소스 코드 안에 리시브 스레드를 만들어두었기에 적용할 때 마다 각 프로젝트에 맞도록 레퍼런스 소스 코드를 수정해야 했습니다. 하지만 이는 레퍼런스로서의 의미가 많이 퇴색된다 생각되어 이번  C#용 레퍼런스 클래스에서는 각 리시브 스레드를 레퍼런스 클래스 외부에서 작성하여 붙일 수 있도록 만들었습니다.


그 외에는 딱히 변경이나 추가사항 없이 기존의 레퍼런스와 같습니다.


작업 환경은 .Net Framework 4.0 기반, VS2010 기준으로 작성했으며, 솔루션 파일을 열면 두개의 프로젝트가 있습니다.


1. CloudtreeReference 프로젝트 : dll 파일을 생성하는 레퍼런스 클래스

2. CloudtreeReference_SampleForm 프로젝트 : 레퍼런스 적용 예시 윈도우 폼 어플리케이션



다음은 레퍼런스 클래스에 구현되어 있는 함수 내역입니다.

생각할 수 있는 최대한 쓰기 편하도록 짜보긴 했는데, 쓰면서 불편한 점이 생기면 그때마다 버전업 해 갈 예정입니다.



TCP/IP

서버

클라이언트

UDP

 UDP

수학함수

Euclidean distance 2D

Euclidean distance 3D

가우시안 랜덤수 생성

좌표계

위경도 방위각 계산

위경도 거리 계산

ECEF-위경도 좌표계 변환

시간경과

시간경과 체크 

공유메모리

공유메모리 생성

쓰기

읽기




레퍼런스 클래스 DLL을 적용한 샘플 윈도우 폼 어플리케이션 구성은 다음 그림과 같습니다.










C#에 어느정도 익숙하신 분이라면 코드만 봐도 큰 어려움 없이 적용이 가능하시리라 생각합니다.

원본 소스코드 및 바이너리가 포함된 압축파일을 첨부합니다.



CloudtreeReference_sample_v1.0.0.zip



ps. 차후 업데이트는 TCP 소켓 통신을 현재의 1:1 접속에서 1:n 다중 접속 방식으로 변경하기 위해 비동기 소켓 통신으로 변경하는 작업이 되지 않을까 합니다.