임의의 객체타입을 만들어 보자.
이것은 class가 될 수도 있고 struct등의 구조체 일 수도 있다.

편의상 struct로 예제코드를 한번 만들어 보겠다.

< 보내는 쪽 >
struct A
{
int rank[20];      // int형은 4byte이므로 전체 80byte
char  name[20];  //char형은 1byte이므로 전체 20byte
};  // 즉 이 구조체가 가지는 메모리 용량은 총 100byte

A a; // 타입 선언

// 전송할 값을 채워 넣는다~~~~ 소켓을 연다

// Send Data
 // ================= 방법 1 
write( (char *) &a, sizeof(A) );  // 포트에 적는다. (char *) 캐스팅에 주목하자
 // ================= 방법 2
char sendData[100];
memcpy(sendData,&a,sizeof(A) ); // 메모리 내용 복사.
write( sendData, sizeof(A) );
 

< 받는 쪽>
// 물론 같은 형식의 객체가 선언 되어있을 것이다.
A receivedData;  // 객체 선언
read( &receivedData, sizeof(A) ); // 간단히 수신.!!!

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


이건 정말 엄청난 사실이었다..
메모리를 공유하게 해주는 struct가 있었다니 !!!!
그건 바로 union type!!!
char 는 변수 하나당 1 byte
float 와 int  는 변수 하나당 4 byte

그리하여 결국 float a 는 char b[4] 에 담길 수 있는 것이다.
패킷으로 전송을 할때 우리는 char배열만을 보낼수 있는 고로..
이것은 정말 갈라지는 땅에 단비와 같은 사실이 아닐 수 없었다.

다음의 코드는 어떻게 위의 작업을 할 수 있는지를 보여주는 코드이다.
실제로 복/붙 하여도 멋지게 돌아갈 것이다 테스트 해보라!!

#include <stdio.h>
#include "stdafx.h"
 
typedef union
{
  unsigned char a[4];
  float b;
} union_data;
 
int main()
{
  union_data data_s,data_r;
  data_s.b = 123.352; // send할 float값을 세팅한다.
  // 캐릭터 배열의 메모리만을 복사한다!!!!
  memcpy(&data_r.a, &data_s.a,sizeof(data_s.a)); 

  printf("%x %x %x %x\n", data_r.a[0], data_r.a[1], data_r.a[2], data_r.a[3]);
  // 넘겨받은 데이터의 FLOAT 값을 출력해본다. 
  printf("%f\n", data_r.b);
  return 0;
}


이정도면 어떤가.. 대단하지 않은가??
이글을 읽으시는 모두에게 도움이 되었기를 바랍니다 ㅋㅋㅋ 

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

나는 언제부턴가 이것만 사용하고있다.
솔직히 Capslook쓰는 사람 얼마나 있는가...
버튼 위치는 황금인데 거의 사용을 하지 않는다.

언제 키보드회사에서 자체적으로 Ctrl 과 Caps가 바뀐 제품을 출시 할런지..

어쨌든.... 이거없으면 나 .. 이제는 못살것 같다 ㅋㅋ
window용 register이다. 그냥 가볍게 더블클릭 해주고 재부팅을 하면 된다 !

 

'My Work > Some Other' 카테고리의 다른 글

ctrl - capslook swapper (컨트롤, 캡스룩 키전환)  (0) 2011/12/19
2009/11/21 토플 시험 후기.  (2) 2009/11/21

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

BLOG main image
by jsilva

공지사항

카테고리

분류 전체보기 (21)
Go out (2)
My Work (18)
My Precious (1)
Just Feeling (0)
Scrap (0)

최근에 받은 트랙백

Total : 2,176
Today : 0 Yesterday : 13