본문 바로가기
코스웨어/11년 내장형하드웨어

[내장형]윤민석 2011년 7월 6일 수업내용

by 알 수 없는 사용자 2011. 7. 6.
728x90
반응형

<함수 포인터 복습>

밑의 소스의 빈칸을 채우시오 test 함수의 인자는 p 입니다.

(          )test(  ?   ) (          )
{
  return malloc;
}

int main()
{
  (          fp        ) = test(printf);
  return 0;
}

malloc 기본형 void *malloc(size_t size) 입니다.

size_t  => int 입니다.

그러므로

void *malloc(int) 로 쓸수있습니다.

위의 빈칸을 메우게 되면

void *(*test(int(*p)(const char *, ...)))(int)
{
  return malloc;
}
int main()
{
  void *(*fp))(int) = test(printf);
  return 0;
}

이렇게 쓸수가 있습니다.

[어제 한 구조체 포인트 보충설명]

 

 

위 소스는 구조체를 이용하여 (int  char 배열) 포인터가 보는 관점을 다르게 만들어 놓은 소스입니다.

구조체 포인터는 array 를 가리키고있습니다.

그러므로 구조체가 array 를 구조체 형식으로 보고있습니다.


구조체는 int a,b,c, 가 있으므로 12byte 를 한번에 살펴 봅니다.


위 그림처럼 됩니다.


[PE HEADER]
의 구조체 입니다.



[
소스]




여기서 Magic Number 가 들어있는 곳이 e_magic 인데 여기를 HEXAView 로 열어보겠습니다.


‘MZ’ 라는 매직넘버를 확인하실수 있습니다.


[
리눅스 에서 보는 Magic Number]

[소스]


윈도우즈에서 확인한 것이랑 거의 차이가 없음을 알 수가 있습니다.

[elf.h HEXAView 로 본화면]


elf.h 는 include 폴더에 들어있으므로 그냥 사용하면됩니다.

매직넘버가 16개가 나왔는데

16개인지 는 아직 잘 모르겠습니다.


TCP/IP

IP주소와 포트 번호를 입력 하여 실행시키는 소스입니다.



[이소스를 hello_server.c 에 적용시키면]


server 쪽에는 빨간네모 친곳이 바뀌게 됩니다.

atoi(argv[1])은 포트 번호 자리가  1 번 자리 이기 때문입니다.

[이소스를 hello_client.c 에 적용시키면]



client 쪽에 빨간네모 친 곳이 바뀐곳입니다.

server 쪽을 실행시킨모습


client 쪽을 실행시킨 결과


입니다.

 
내용이 많이 부족한 점이 많습니다.
여러분들이 많이 지적해주시고 고치도록 하겠습니다.

728x90