컴퓨터 네트워크 프로그래밍 2장 연습문제
- 최초 등록일
- 2008.11.14
- 최종 저작일
- 2008.10
- 6페이지/ 한컴오피스
- 가격 1,000원
소개글
홍릉출판사 "컴퓨터 네트워크 프로그래밍" 2장연습문제
목차
1. socket descriptor 와 file descriptor의 차이점은 무엇인가?
2. 2-1절에 나와 있는 open_socket.c 프로그램을 작성하여 실행하여 보아라.
- 파일 번호 및 소켓번호는 어떻게 나오는가?
3. 소켓주소를 저장하는 구조체로 sockaddr와 sockaddr_in 두 가지가 정의되어 있는 이유
를 설명하고 인터넷 프로그램에서는 어느 것을 사용하는 것이 편리한지 이유를 설명하라.
4. 2-2절의 byte_order.c 프로그램을 작성하고 출력에 대해 논하라.
5. 4번을 활용하여 4 바이트로 표현된 숫자의 바이트 순서를 바꾸는 프로그램을 작성하시
오. 예를 들어 16진수 0x12345678을 입력하면 0x78563412가 출력되도록 하시오. 순서를
바꾸는 함수의 프로토타입을 아래와 같이 작성하고, 아래의 before 인자는 바이트 순서를
바꾸기 전의 값이며 함수의 리턴 값은 바이트 순서가 바뀐 후의 값이다.
unsigned int convert_order32 (unsigned int before);
6. 자신이 사용하는 시스템의 호스트 바이트 순서가 big endian인지 little endian 인지를
확인하는 프로그램을 작성하시오 (반드시 3번에서 만든 convert_order32 함수를 이용).
7. ascii_ip.c 프로그램을 작성하여 보고, inet_addr() 함수를 inet_pton() 함수로 변환하여
프로그램을 수정하여보라.
8. gethostbyname() 함수를 이용하여 도메인 네임 (www.google.com)에 대해 리턴받는
hostent 구조체에 저장되어 있는 모든 내용을 출력하는 프로그램을 작성하고 그 결과를 서
술하시오
본문내용
1. socket descriptor 와 file descriptor의 차이점은 무엇인가?
⇒ 소켓디스크립터와 파일디스크립터는 같다고 볼 수 있다. 파일디스크립터는 정규 파일뿐만 아니라 키보드, 모니터, 하드웨어 장치, 파이프, 소켓 등을 파일로 취급하여 이것들은 파일디스크립터를 통하여 액세스하게 되어있다.
소켓디스크립터란 소켓을 개설하여 얻은 파일 디스크립터이며 응용프로그램에서 이 소켓을 통하여 데이터를 송수신할 때 이 소켓 디스크립터를 사용하게 된다.
2. 2-1절에 나와 있는 open_socket.c 프로그램을 작성하여 실행하여 보아라.
- 파일 번호 및 소켓번호는 어떻게 나오는가?
/etc/passwd`s file descriptor = 3
stream socket descriptor = 4
datagram socket descriptor = 5
/etc/hosts`s file descriptor = 6
⇒ 시스템은 이미 키보드로 표준입력(stdin)을 0, 표준출력(stdout)을 1, 표준에러출력(stderr)를 2로 할당하기 때문에 3부터 할당한다.
3. 소켓주소를 저장하는 구조체로 sockaddr와 sockaddr_in 두 가지가 정의되어 있는 이유
를 설명하고 인터넷 프로그램에서는 어느 것을 사용하는 것이 편리한지 이유를 설명하라.
⇒ 소켓 프로그래밍에서 크랄이언트 또는 서버의 구체적인 주소를 표현하기 위해서는 주소체제(address familt), IP주소, 포트번호 세가지가 지정되어야 하는데 이 세가지 정보를 묶어 소켓주소(soket address)라고 부른다. 이 소켓주소를 담을 구조체가 sockaddr 이며 2바이트의 address family 와 14바이트의 주소(IP주소 + 포트번호)로 구성되어있다. 하지만 이 구조체에는 IP주소와 포트번호를 구분하여 쓰거나 읽기가 불편하여 인터넷 프로그램에서는 불편하다. 그래서 sockaddr 대신에 sockaddr_in를 사용한다. sockaddr_in은 4바이트 IP주소와 2바이트 포트번호를 구분하여 액세스 할 수 있다.
참고 자료
홍릉출판사 컴퓨터 네트워크 프로그래밍