Visual C++을 이용한 CRC구현
닫기
  • 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
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

Visual C++을 이용한 CRC구현에 대한 보고서 자료입니다.

목차

1. 개요
2. 과제설명
3. CRC(Cyclic Redundancy Check : 순환중복검사)란?
3.1 CRC의 정의
3.2 CRC의 원리
3.3 CRC의 성능
4. Flow Chart
4.1 Sender
4.2 Receiver
4.3 Socket Programming
4.4 CRC Generator
4.5 CRC Checker
5. Reference

본문내용

ExclusiveOr(char *remainder,char *poly,int polylen)
* 문자열을 인자로 받아 XOR연산을 수행한다.
*/
void ExclusiveOr(char *remainder, char *poly, int polylen)
{
int j;
for(j = 0; j < polylen; j++)
if(remainder[j] == poly[j]) // 두 비트가 같다면
remainder[j] = '0'; // 0 대입
else
remainder[j] = '1'; // 다르다면 1 대입
}
/*
* CheckCRC(char *remainder)
* CRC 값을 검사한다.
* 알고리즘에 따라 CRC 값을 검사하고 remainder를 생성한다..
*/
int CheckCRC(char *remainder)
{
int i;
int j;
for(i = 0; i < strlen(message); i++)
remainder[i] = message[i];
remainder[strlen(message) + 32] = '\0';
for(i = 0; i < strlen(message); i++)
{
if(remainder[0] == '0')
shift(remainder);
else
{
ExclusiveOr(remainder, poly, strlen(poly));
shift(remainder);
}
}
printf("\nremainder: "); // remainder 출력
puts(remainder);
printf("\n");
j = 0;
for(i = 0; i < strlen(remainder); i++) // 에러 검출
if(remainder[i] != '0')
j++;
return j;
}
6. 프로그램의 실행
6.1 실행 방법
수신부의 소스 코드 receiver.c 를 컴파일한 실행 파일의 이름은 receiver.exe 이고, 송신부의 소스 코드 sender.c 를 컴파일한 실행 파일의 이름은 sender.exe 이다. 실제 실행은 수신부 - > 송신부의 순서로 이루어져야 한다. 수신부가 먼저 실행되어 있는 상태에서 송신부를 실행하여 메시지를 입력하면 송신부에서 수신부로 메시지를 전달한 후에 에러 없이 전송이 이루어 지면, 혹은 에러가 있다면 올바른 메시지가 전송될 때까지 재전송이 이루어 진 후에 수신부, 송신부 프로그램이 모두 종료되게 된다.
수신부 프로그램은 실행 파일이 존재하는 디렉토리 내에서 command 창에
receiver port_number
의 command 를 입력함으로서 수행되며, port number 는 임의로 지정해 주면 된다. 본 시뮬레이션에선 1로 지정하였다.
송신부 프로그램은 수신부 프로그램이 수행된 후에 command 창에
sender localhost_address port_number
의 command 를 입력함으로써 수행되며, localhost_address 는 자신의 컴퓨터의 ip address 를 입력해 주며, port number 는 수신부 프로그램 실행 시 지정한 것과 동일하게 지정해 주면 된다. ip address를 보는 방법은 작업표시줄 -> 시작 -> 실행 -> ipconfig에서 볼 수 있다.
6.2 실행 화면
우선 receiver를 실행시킨다. 프로토콜은 임의로 정하면 된다. 1로 설정해 보자. 시작 -> 실행 -> cmd를 입력하여 command창을 띄운 후, 해당 폴더로 이동 한 후 receiver 1을 입력한다.
Fig 6-1 receiver 실행 화면
sender를 실행시키기에 앞서 ipconfig 명령어를 통해 내 컴퓨터의 ip 주소를 확인한다.
Fig 6-2 ipconfig 화면
내 컴퓨터의 ip 주소는 119.194.113.202 이다. 이를 sender 실행시 인자로 전달하기로 하자.
다음으로 sender를 실행하고 메시지를 입력한다.
Fig 6-3 sender 실행 화면 - 전송 시 에러가 생겼을 경우
메시지를 입력하면 각 글자별 ASCII code와 CRC 코드, remainder 가 출력된다. 이것은 메시 송신에 에러가 생긴 경우로서 메시지를 다시 입력하도록 요구함을 알 수 있다.
이제 receiver를 다시 확인해 보면
Fig 6-4 Receiver 실행 화면 - 전송 중 오류 발생 시 화면
이처럼 수신된 CRC 코드와 remainder 를 출력하는 것을 볼 수 있다. 잘못된 메시지가 수신되었기에 sender 가 메시지를 다시 전송하기를 기다리며 프로그램이 종료되지 않고 프롬프트가 깜박이고 있는 것을 볼 수 있다.
하지만 메시지가 올바르게 전송되었을 시에는 다음과 같이 receiver와 sender 모두 바로 종료되는 것을 볼 수 있다.
Fig 6-5 sender 실행 화면 - 정상적으로 전송되었을 경우
Fig 6-6 Receiver 실행 화면 - 정상적으로 전송되었을 경우
7. 고찰
세 번의 프로젝트 중에 가장 많은 시간과 노력을 들여야 했지만 그 만큼의 보람을 느낄 수 있는 과제였다. 소켓 프로그램의 경우 처음 접해 보는 것이라 이해에 있어서 어려움을 겪기도 했지만 그만큼 많이 공부할 수 있는 기회가 되었고 CRC 코드를 직접 구현해 봄으로써 확실히 이해할 수 있는 기회가 되었다. 그리고 데이터 통신에서 처음 나오는 프로그래밍 과제라 보람도 즐거움도 더 컸던 것도 사실이지만 그다지 쉽지는 않은 과제였다. 하지만 문제를 해결하며 한 층 C언어에 가까워 진 것 같아서 보람을 느꼈다.
8. 감사의 말
교수님!! 한 학기 동안 정말 고생 많으셨습니다!!
9. Reference
1. Systems Programming, John J. Donovan, McGraw-Hill, 1972
2. A BOOK ON C, Kelley, Al/ Pohl, Ira, Addison-Wesley, 1997
3. 알기 쉽게 해설한 C, 유해영/우진운 역, 이한출판사, 2003
4. 이산수학, 김문현, 김응모, 엄영역, 조대호, 추현승공역, 사이텍미디어, 2004
5. Data Communications and Networking, Behrouz A. Forouzan, McGrawHill, 2007
  • 가격5,000
  • 페이지수30페이지
  • 등록일2010.01.18
  • 저작시기2009.6
  • 파일형식한글(hwp)
  • 자료번호#575334
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니