컴퓨터네트워크프로그래밍(홍릉과학) 3장연습문제풀이
- 최초 등록일
- 2008.12.12
- 최종 저작일
- 2008.10
- 10페이지/ 한컴오피스
- 가격 1,000원
소개글
컴퓨터네트워크프로그래밍(홍릉과학)
3장 연습문제 풀이입니다.
목차
1. daytime 클라이언트 프로그램을 작성하고, 현재의 출력 값을 확인하라.
2. bind() 함수를 잘못 사용하는 경우 발생하는 에러코드를 확인해 보시오. 아래의 테스트 항목별로 bind() 함수를 실행하고 bind() 함수가 실패한 경우 perror() 함수를 사용하여 에러의 내용을 출력하시오.
3. Iterative Echo server를 작성하고, 기존에 작성한 Echo client를 이용하여 연결을 확인하라. 두 개 이상의 client 프로그램을 동작시켜서, iterative 서버가 서비스를 제공해주는 순서에 대해 확인해보고 그 특성을 논하라
4. UDP echo server와 UDP echo client 프로그램을 작성하여라.
본문내용
3. Iterative Echo server를 작성하고, 기존에 작성한 Echo client를 이용하여 연결을 확인하라. 두 개 이상의 client 프로그램을 동작시켜서, iterative 서버가 서비스를 제공해주는 순서에 대해 확인해보고 그 특성을 논하라.
반복적인(Iterative) 서버의 함수 호출 순서
흐름도에 대해 보충 설명을 해 본다면, accept 함수의 호출 시점에서 ‘클라이언트 연결 소켓(클라이언트의 연결 요청을 수락하기 위해 accept 함수 호출 시 생성되는 소켓을 말함)’ 을 생성한 후 적절한 데이터 송수신 과정을 거친 다음 close 함수를 호출해 주고 있다. 여기서 호출하는 close 함수 호출의 목적은 ‘서버 소켓’을 종료하는 것이 아니라 ‘클라이언트 연결 소켓’의 종료가 목적이다. 그 다음, 다른 클라이언트의 연결 요청을 수락하기 위해서 다시 accept 함수의 호출로 순서가 이어진다. 이렇게 반복적인 과정을 통해서 순서대로 클라이언트에게 서비스를 해 주게 된다.
실행결과
- 클라이언트 프로그램을 1, 2를 순서대로 실행한 다음에 우선 2번째 실행된 프로그램에 문자 입력 후, 서버로부터 응답이 오지 않는다. 그 이유는 Iterative 서버는 1번째 클라이언트 프로그램의 연결요청을 기다리고 있기 때문이다. 그 다음에 1번째로 실행한 프로그램에 문자 입력을 하면 서버는 1번째 프로그램의 연결요청을 허용하고 데이터 송수신을 하며 1번째 클라이언트의 연결을 종료시킨다. 그렇게 하고 나면 서버는 2번째 실행된 프로그램의 연결요청을 허용하고 데이터 송수신을 한 다음에 2번째 클라이언트의 연결을 종료시킨다. 그 다음에 서버는 새로운 클라이언트로부터 연결요청을 기다리게 된다.
- Iterative 에코 서버
- 1번째 실행 클라이언트
- 2번째 실행 클라이언트
참고 자료
컴퓨터 네트워크 프로그래밍 - 홍릉과학출판사
TCP/IP소켓 프로그래밍