Selective Repeat ARQ 도와주세요
char array (혹은 String) SEND_BUFF (MAX 1024 크기)에 보낼 문자를 화면으로 최소 200문자를 키보드로 받은 후 (단 “&” 문자는 입력이지만 전송시 발생한 오류로 간주 합니다. 재전송시 7로 변환해서 보냅니다.) Sleep(1000) 함수를 이용해 1초간 기다립니다 (전송시간으로 간주). 그 다음 RECV_BUFF (1024 크기)에 윈도우 크기만큼(n; 프레임크기를 1byte, 즉 1 character로 가정) 복사 합니다. 단 n: 윈도우크기 - 개발자가 정의). 즉 수신 함수는 n개를 복사(array 에서 array)후 수신측에서는 RECV_BUFF를 윈도우 사이즈 만큼 읽으면서 윈도우에 “&” 문자가 들어 왔다면 오류로 간주하여 해당된 패킷 순서 번호를 NAK 변수에 기록합니다. 정상일 때는 ACK 변수에 다음 번에 수신을 희망하는 패킷 번호를 부여합니다. 그리고 다시 Sleep(1000)을 하여 수신자가 송신자에게 1초 동안 응답을 전송한 것으로 간주 합니다. 이제 sender 측에서는 NAK 변수의 값 혹은 ACK 변수의 값을 확인하고 NAK인 경우 재전송(& 대신 7로 전송)하거나 ACK인 경우 ACK 메시지에서 지정한 번호의 패킷을 보냅니다. 이 부분은 Selective Repeat ARQ 의 알고리즘을 그대로 따라하시면 됩니다. 그리고 보내고 받은 패킷 검사를 위해 패킷을 화면에 출력 바랍니다.
개발시 주의 사항: 꼭 따라하지 않아도 됨. 권장사항 임.
- 전역변수 활용 바람: 예: ACK, NAK, SEND_BUFF, RECV_BUFF
- send() / recv() 두개의 함수로 나누어 작업
- main 기능: 사용자 데이터입력을 받음/ send() 와 recv() 함수를 반복문을 이용해 번갈아 호출
- send() 필요기능: 데이터 입력받은 후 1초간 sleep/ 윈도우 크기 n개 만큼 나누어 RECV_BUFF로 copy 함/ NAK 및 ACK 변수 체크/현재 위도우 위치 저장/ 전송된 데이터 화면 출력
- recv() 필요기능: 윈도우 사이즈 만큼 읽어 각 윈도우에 에러 유무 파악/ACK 혹은 NAK 변수에 패킷 번호 기록/1초간 sleep()/수신 처리된 데이터 화면 출력/에러 데이터 출력
=========================================================================
학교 숙젠데여. 제가 컴공과가 아닌데도 흥미있어서 수강한 과목이 올해부터 어려운 프로그래밍 과제로 나오네여..
다음 가이드라인에 따라 Selective Repeat ARQ 흐름제어 알고리즘을 구현하세요
인용:다음
kimkyng님 이런식으로 숙제 부탁하면 답변 안올라와요.
이해가지 않는 내용을 정리해서 질문하셔야죠?
차라리 지식in에 내공 이빠시 거시고 올리시는게 빠르시겠어요.
---------------------------------------
세계는 넓고, 할일은 많다.
---------------------------------------
세계는 넓고, 할일은 많다.
-_-; 문제에
-_-; 문제에 알고리즘이 다 나와있는데요;
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
댓글 달기