이건 정말 엄청난 사실이었다..
메모리를 공유하게 해주는 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;
}


이정도면 어떤가.. 대단하지 않은가??
이글을 읽으시는 모두에게 도움이 되었기를 바랍니다 ㅋㅋㅋ 
Posted by jsilva
나는 언제부턴가 이것만 사용하고있다.
솔직히 Capslook쓰는 사람 얼마나 있는가...
버튼 위치는 황금인데 거의 사용을 하지 않는다.

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

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

 
Posted by jsilva
프로그램은 단순하게 3가지 파트로 나뉘어있다.
1. prio_queue.h <공통>
2. msg_server.c  <메세지를 받아 줄 서버>
3. msg_client.c   <메세지를 보낼 클라이언트>

실행방법은 간단하다.
먼저 둘다컴파일한다.
본인은 linux에서 작업하기 때문에 gcc로 했다.

먼저 컴파일
> gcc -o a msg_server.c
> gcc -o b msg_client.c

서버 백그라운드로 작동.
> ./a &

메세지를 보내보자! (ex. ./b hello 10)
> ./b msgcontent priority(정수)

이렇게하면 아마 이런 화면이 뜰것이다.
 


그럼 모두 열공하시길..!!!

 
Posted by jsilva

블로그 이미지
음악을 좋아하는 개발자입니다 ㅎㅎ 그냥 제 일상, 생각, 지식, 정보 등을 담은 위한 공간입니다 ^^
jsilva

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함

최근에 올라온 글

최근에 달린 댓글