C 86

TCP/IP 소켓 프로그래밍 11장 내용 확인문제

1. 프로세스간 통신이 의미하는 바는 무엇인가? 이를 개념적으로, 그리고 메모리의 관점에서 각각 설명해보자 >개념적으로 프로세스간 통신은 두 프로세스 사이에서 데이터를 주고 받는 것을 의미한다.메모리의 관점에서 보면 이는 두 프로세스가 메모리를 공유하는 것으로 이해할 수 있다. 공유하는 메모리의 영역이 존재함으로써 프로세스 상호간에 데이터를 전달할 수 있기 때문이다. 2. 프로세스간 통신에는 IPC라는 별도의 메커니즘이 요구된다. 그리고 이는 운영체제에 의해서 지원되는 별도의 기능이다. 그렇다면 프로세스간 통신에 있어서 이렇듯 운영체제의 도움이 필요한 이유는 무엇인가? >IPC를 위해서는 공유되는 메모리가 필요한데, 프로세스간에는 메모리를 공유하지 않기 때문에 운영체제의 도움이 필요하다. 즉, 두 프로세..

명품 C언어 프로젝트 3.3장 연습문제

[1번 문제]/*[예제 3.3.2]에 대해 화면 좌표상의 점을 구조체(struct)로 정의하여 표현하도록 프로그램을 수정하시오*/#include #include void gotoxy(int x, int y);void axis(void);void draw_xy_line02(int a, int b); typedef struct{ int xpos; int ypos;}Point; int main(void){ int a, b; printf("y=ax+b의 직선 식을 좌표에 출력\n"); printf("기울기 입력>"); scanf("%d", &a); printf("절편 입력>"); scanf("%d", &b); system("cls"); axis(); draw_xy_line02(a, b); gotoxy(1, 23..

TCP/IP 소켓 프로그래밍 10장 내용 확인문제

1. 다음 중 프로세스에 대한 설명으로 옳은 것은? >a. 프로세스는 운영체제의 관점에서 프로그램의 실행 단위가 된다. b. 프로세스도 생성방식에 따라서 부모와 자식의 관계를 갖는다 *틀린 설명c. 프로세스는 다른 프로세스를 포함할 수 있다. 즉, 하나의 프로세스는 자신의 메모리 영역에 또 다른 프로세스를 포함할 수 있다. ->프로세스는 독립적인 존재이다. 다른 프로세스를 포함할 수 없다. d. 자식 프로세스는 또 다른 자식 프로세스를 생성할 수 있고, 이렇게 생성된 자식 프로세스 역시 또 다른 자식 프로세스를 생성할 수 있지만, 이들은 모두 하나의 프로세스와만 부모자식의 관계를 형성한다.->하나의 프로세스와만 부모자식의 관계를 형성하는 것은 맞지만, 자식프로세스가 다른 자식 프로세스를 생성할 수는 없다..

TCP/IP 소켓 프로그래밍 1~5장 함수 복습

[리눅스 소켓 생성 함수]#include int socket(int domain, int type, int protocol);->성공시 파일 디스크립터, 실패 시 -1 반환 *domain:소켓이 사용할 프로토콜 체계(Protocol Family) 정보 전달*type:소켓의 데이터 전송방식에 대한 정보 전달*protocol:두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달 [리눅스 소켓에 주소정보 할당하는 함수]#include int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);->성공시 0, 실패시 -1 반환 *sockfd:주소정보를(IP와 PORT를) 할당할 소켓의 파일 디스크립터*myaddr:할당하고자 하는 주소정보를 지니는 구조체 변수의..

TCP/IP 소켓 프로그래밍 9장 내용 확인문제

1. 다음 중 Time-wait 상태에 대해서 맞게 설명한 것을 모두 고르면? >b. 연결종료의 Four-way handshaking 과정에서 먼저 FIN 메세지를 전달한 소켓이 Time-wait 상태가 된다. *틀린 내용 a.Time-wait 상태는 서버 프로그램에서 생성한 소켓에서만 발생한다. ->소켓의 Time-wait 상태는 클라이언트냐 서버냐에 상관없이 존재한다. 먼저 연결의 종료를 요청하면 해당 소켓은 반드시 Time-wait 상태를 거친다. 하지만 클라이언트의 Time-wait 상태는 신경을 쓰지 않아도 된다. 왜냐하면 클라이언트 소켓의 PORT번호는 임의로 할당되기 때문이다. c.연결요청 과정에서 전송하는 SYN 메세지의 전송순서에 따라서 Time-wait 상태는 연결종료와 상관없이 일어날..

명품 C언어 프로젝트 3.2장 연습문제

[1번 문제]/*화살표 키를 눌러 숫자를 증가시키거나 감소시키는 프로그램을 작성하시오.기본 숫자 1000에 대해 위쪽 방향 화살표 키를 입력하면 숫자를 증가시키고,아래쪽 방향 화살표 키를 입력하면 숫자를 감소하게 합니다.왼쪽 방향 화살표 키와 오른쪽 방향 화살표 키는 감소하거나 증가시킬 단위를 조절하도록 합니다*/#include #include #include #define X_MAX 79#define Y_MAX 24 void gotoxy(int x, int y);void move_arrow_key(char key, int *num, int *unit); int main(void){ char key; int num = 100; int unit = 1; do { gotoxy(20, 10); printf("..

명품 C언어 프로젝트 3.1장 연습문제

[1번 문제]/*커서 제어 함수인 gotoxy를 이용하여 화면의 중앙부분에 다음 그림과 같은 모양으로 출력하는 프로그램을 작성하시오*/#include #include #include #include void gotoxy(int x, int y); int main(void){ for (int i = 0; i < 5; i++) { gotoxy(40 - 2 * i, 2 + 2 * i); for (int j = 0; j < 2 * (i + 1) - 1; j++) { printf("* "); } } printf("\n"); printf("다음 화면으로 넘기려면 아무키나 누르시오\n"); getch(); system("cls"); for (int i = 0; i < 5; i++) { gotoxy(20, (2 * i..

TCP/IP 소켓 프로그래밍 8장 내용 확인문제

1. 다음 중 DNS(Domain Name System)에 대한 설명으로 맞는 것을 모두 고르시오. >a. DNS가 존재하기 때문에 IP를 대신해서 도메인 이름을 사용할 수 있다. c. 하나의 DNS 서버에 모든 도메인 정보가 다 등록되어 있지는 않다. 그러나 등록되지 않은 도메인의 IP주소도 얻어올 수 있 다. *틀린 설명 b. DNS 서버는 사실 라우터를 의미한다. 라우터가 도메인 이름정보를 참조하여 데이터의 진로를 결정하기 때문이다 ->DNS 서버는 도메인 이름을 IP주소로 변환하는 역할을 수행한다. d. DNS 서버는 운영체제에 따라서 구분이 된다. 즉, 윈도우 운영체제용 DNS서버와 리눅스용 DNS 서버는 구분이 된다. ->구분이 안된다 2. 아래의 대화를 읽고 동수가 제안한 해결책으로 문제가 ..

TCP/IP 소켓 프로그래밍 7장 내용 확인문제

1. TCP에서의 스트림 형성이 의미하는 바가 무엇인지 설명해보자. 그리고 UDP에서도 스트림이 형성되었다고 할 수 있는 요소가 있는지 없는지 말해보고, 그 이유에 대해서도 설명해보자 >TCP에서의 스트림 형성은 두 소켓이 서로 연결되어서 데이터를 송수신할 수 있게 된 상태를 의미한다. 반면, UDP의 경우는 스트림 형성과정이 존재하지 않는다. 두 소켓이 서로 연결되어있는 상태에 놓이지 않기 때문이다. 2. 리눅스에서의 close 함수 또는 윈도우에서의 closesocket 함수 호출은 일방적인 종료로써 상황에 따라서 문제가 되기도 한다. 그렇다면 일반적인 종료가 의미하는 바는 무엇이며, 어떠한 상황에서 문제가 되는지 설명해 보자. >일반적인 종료는 소켓을 완전히 종료시켜서 데이터의 송수신이 모두 불가능..

명품 C언어 프로젝트 2.3장 연습문제

[문제 1]/*[예제 2.3.2]를 참고하여 현재의 연도와 월을 반환하는 int 형 함수 year와 month를 작성하시오*/#include #include int year(struct tm *d){ return d->tm_year + 1900;} int month(struct tm *d){ return d->tm_mon + 1;} int main(void){ time_t curr; struct tm *d; curr = time(NULL); d = localtime(&curr); printf("현재의 연도:%d\n", year(d)); printf("현재의 월:%d\n", month(d)); return 0; } [문제 2]/*[예제 2.3.2]를 참고하여 현재의 시간과 분을 반환하는 int형 함수 ho..