컴퓨터네트워크프로그래밍(홍릉과학) 2장연습문제풀이
- 최초 등록일
- 2008.12.12
- 최종 저작일
- 2008.10
- 8페이지/ 한컴오피스
- 가격 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 인자는 바이트 순서를
바꾸기 전의 값이며 함수의 리턴 값은 바이트 순서가 바뀐 후의 값이다.
등..
본문내용
1. socket descriptor 와 file descriptor의 차이점은 무엇인가?
- 파일을 처음 open하면 시스템(커널)은 이 파일에 관한 각종 정보를 담고 있는 구조체를 할당하는데 이 구조체를 가리키는 포인터들로 구성된 테이블을 파일 디스크립터 테이블이라고 한다. 이 테이블의 인덱스 값이 바로 파일 디스크립터이다. 반면 소켓 디스크립터는 소켓을 개설하여 얻은 파일 디스크립터이며 응용 프로그램에서 이 소켓을 통하여 데이터를 송수신할 때 이 소켓 디스크립터를 사용하게 된다.
2. 2-1절에 나와 있는 open_socket.c 프로그램을 작성하여 실행하여 보아라.
- 파일 번호 및 소켓번호는 어떻게 나오는가?
#include
#include
#include
#include
#include
#include
#include
int main() {
6. 자신이 사용하는 시스템의 호스트 바이트 순서가 big endian인지 little endian 인지를
확인하는 프로그램을 작성하시오. (반드시 5번에서 만든 convert_order32 함수를 이용)
- 프로그램 소스
#include
#include
#include
#include
#include
unsigned int convert_order32(unsigned int before);
int main()
{
unsigned int before, after;
printf("Enter : ");
scanf("%x", &before);
printf("Before : 0x%xn", before);
after = convert_order32(before);
printf("After : 0x%xn", after);
if (after == before)
printf("big endiann");
else
printf("little endiann");
}
unsigned int convert_order32(unsigned int before)
{
return htonl(before);
}
참고 자료
컴퓨터 네트워크 프로그래밍 - 홍릉과학출판사
TCP/IP소켓 프로그래밍