C# 에서 C 언어 처럼 pointer 개념을 사용할 수 있다. pointer 개념은 네트워크 패킷 보낼때 많이 사용한다.

 

 Marshal.StructureToPtr(this, (IntPtr)fixed_buffer, false);

 

unsafe 라고 compiler 에 지시자로 알려주어야 한다. 

 

        public void GetBuffer(byte[] outBuffer)
        {
            if (0 == outBuffer.Length)
                outBuffer = new byte[PACKET_MAX_LEN];

            unsafe
            {
                fixed(byte* fixed_buffer = outBuffer)
                {
                    Marshal.StructureToPtr(this, (IntPtr)fixed_buffer, false);
                }
            }
            
        }

하지만 unsafe 한 항목이어서 컴파일이 안되서 아래처럼  Allow unsafe code 옵션을 설정해 주면 컴파일이 된다. 

 

 

 

 

 

사용자 삽입 이미지


======================= TOOLS =========================================
Languages: C# (Visual Studio 2005, .Net framework2.0), C (gcc)

DB: MySQL

Server: RedHat Linux Kernel version 2.4.20-9, Apache

Softwares: phpMyAdmin, Zeroboard
========================================================================

이번에 ETRI 인턴하면서 참 많은 걸 배우고, 느끼는 거 같다.

2개월 정도, 일주일 이틀씩 시간내서 짠 프로그램이다. 위는 Client 쪽인데, C#으로 짰다.

즐겨찾기가 다른 컴퓨터에서는 쓰기가 힘들다는 점에 착안해서, 즐겨찾기를 주기적으로

서버에 업데이트 시켜주도록 했다.

몽땅 가져가는건 아니고, 디렉토리를 모두 검사해서 파싱하여 1개의 XML 형식의 파일로

만들어서, 서버로 보내고, 나중에 받아올때도 1개의 XML 파일을 받아와서

파싱하여 디렉토리와 파일 구조로 내보내게 되는 것이다.

C#은 몇라인인지 모르것다 -_-; 파일이 여러개라.. 음 자동으로 생성되는 코드가 많아서

그리 길지 않은거 같다. 대략 천라인 되려나...

C도 그리 길지 않도 천라인이 좀 안되는듯.. 쩝

역시 하고 보면 쉬운건데, 삽질한 기억만 난다. -_-;

(별거 아니지만;; 연구소에서 한거라, 소스코드는 공개 안한다. 다음부터는 하도록 하겠다)

+ Recent posts