본문내용
n");
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");//Loop-back 주소
serv_addr.sin_port = htons(10000);//Port# 10000
//서버에 연결요청 및 오류처리
ret = connect(client_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
if(ret==-1)
printf("connect error\n\n");
while(true)
{
fputs("input(q to quit) : ", stdout);
fgets(buf, BUFSIZE, stdin);
if(!strcmp(buf, "q\n")) break;
send(client_sock, buf, strlen(buf), 0);//서버에 Request를 보냄
for(int i=0; i
recv(client_sock, buf, BUFSIZE-1, 0);//서버의 Response를 받음
fprintf(stdout, "Received message : %s\n", buf);
}
closesocket(client_sock);
WSACleanup();//라이브러리 해제
}
3. EMP의 실행 동작 (※Note : iamtaesu - 관리자 ID, 20062655 - 사용자 ID)
(1) 관리자 모드 접속 (Server - 왼쪽, Client - 오른쪽)
① 관리자 모드로 접속된 화면
Client Request : INIT (ID: iamtaesu, Password: 123123)
Server Response : 201 Connected the Management mode
관리자 모드로 접속되었음을 나타낸다.
② 엘리베이터를 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 200 OK, 10 Floor
엘리베이터가 10층으로 호출되었음을 나타낸다.
③ 엘리베이터가 가동 중인 상태에서 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 301 Busy
현재 엘리베이터가 가동 중이기 때문에 Client의 Call 명령을 수행할 수 없음을 나타낸다.
④ 엘리베이터의 실시간 전력 사용량 확인
Client Request : INFO
Server Response : 200 OK, 1291220420kW
서버는 현재 실시간 전력 사용량을 Return한다.
⑤ 엘리베이터를 절전모드로 전환
Client Request : CTRL (Mode: 0)
Server Response : 200 OK, Sleep Mode
(엘리베이터를 절전모드로 가동함을 나타냄)
⑥ 엘리베이터를 일반모드로 전환
Client Request : CTRL (Mode: 1)
Server Response : 200 OK, Normal Mode
(엘리베이터를 일반모드로 가동함을 나타냄)
⑦ EMP 접속해지
Client Request : LOUT
Server Response : 202 Log out the Management mode
관리자모드에서 로그아웃 되었음을 나타낸다.
(2) 사용자 모드 접속 (Server - 왼쪽, Client - 오른쪽)
① 사용자 모드로 접속된 화면
Client Request : INIT (ID: 20062655, Password: 123123)
Server Response : 201 Connected the Management mode
사용자 모드로 접속되었음을 나타낸다.
② 엘리베이터를 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 200 OK, 10 Floor
엘리베이터가 10층으로 호출되었음을 나타낸다.
③ 엘리베이터가 가동 중인 상태에서 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 301 Busy
현재 엘리베이터가 가동 중이기 때문에 Client의 Call 명령을 수행할 수 없음을 나타낸다.
④ 엘리베이터의 실시간 전력 사용량 확인
Client Request : INFO
Server Response : 403 Not have Authorization
권한이 없음을 나타낸다. (사용자모드이기 때문에)
⑤ 엘리베이터 가동모드 전환
Client Request : CTRL
Server Response : 403 Not have Authorization
권한이 없음을 나타낸다. (사용자모드이기 때문에)
⑥ EMP 접속해지
Client Request : LOUT
Server Response : 202 Log out the Management mode
사용자모드에서 로그아웃 되었음을 나타낸다.
(3) 오류 및 예외처리 (Server - 왼쪽, Client - 오른쪽)
① EMP 초기설정이 되기 전에 엘리베이터를 호출한 경우
Client Request : CALL
Server Response : 404 Not Connected
EMP 초기설정이 되지 않았음을 나타낸다.
② 존재하지 않은 ID를 입력한 경우
Client Request : INIT (ID: computer)
Server Response : 400 No Such User
엘리베이터 데이터베이스에 해당 사용자가 존재하지 않음을 나타낸다.
③ Password를 잘못 입력한 경우
Client Request : INIT (ID: iamtaesu, Password: abcd)
Server Response : 402 Illegal Password
엘리베이터 데이터베이스에 해당 사용자의 비밀번호가 일치하지 않음을 나타낸다.
④ EMP 초기설정 이후 존재하지 않는 명령어를 입력한 경우
Client Request : ABCD
Server Response : 300 Bad Request
존재하지 않는 명령어임을 나타낸다.
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");//Loop-back 주소
serv_addr.sin_port = htons(10000);//Port# 10000
//서버에 연결요청 및 오류처리
ret = connect(client_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
if(ret==-1)
printf("connect error\n\n");
while(true)
{
fputs("input(q to quit) : ", stdout);
fgets(buf, BUFSIZE, stdin);
if(!strcmp(buf, "q\n")) break;
send(client_sock, buf, strlen(buf), 0);//서버에 Request를 보냄
for(int i=0; i
fprintf(stdout, "Received message : %s\n", buf);
}
closesocket(client_sock);
WSACleanup();//라이브러리 해제
}
3. EMP의 실행 동작 (※Note : iamtaesu - 관리자 ID, 20062655 - 사용자 ID)
(1) 관리자 모드 접속 (Server - 왼쪽, Client - 오른쪽)
① 관리자 모드로 접속된 화면
Client Request : INIT (ID: iamtaesu, Password: 123123)
Server Response : 201 Connected the Management mode
관리자 모드로 접속되었음을 나타낸다.
② 엘리베이터를 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 200 OK, 10 Floor
엘리베이터가 10층으로 호출되었음을 나타낸다.
③ 엘리베이터가 가동 중인 상태에서 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 301 Busy
현재 엘리베이터가 가동 중이기 때문에 Client의 Call 명령을 수행할 수 없음을 나타낸다.
④ 엘리베이터의 실시간 전력 사용량 확인
Client Request : INFO
Server Response : 200 OK, 1291220420kW
서버는 현재 실시간 전력 사용량을 Return한다.
⑤ 엘리베이터를 절전모드로 전환
Client Request : CTRL (Mode: 0)
Server Response : 200 OK, Sleep Mode
(엘리베이터를 절전모드로 가동함을 나타냄)
⑥ 엘리베이터를 일반모드로 전환
Client Request : CTRL (Mode: 1)
Server Response : 200 OK, Normal Mode
(엘리베이터를 일반모드로 가동함을 나타냄)
⑦ EMP 접속해지
Client Request : LOUT
Server Response : 202 Log out the Management mode
관리자모드에서 로그아웃 되었음을 나타낸다.
(2) 사용자 모드 접속 (Server - 왼쪽, Client - 오른쪽)
① 사용자 모드로 접속된 화면
Client Request : INIT (ID: 20062655, Password: 123123)
Server Response : 201 Connected the Management mode
사용자 모드로 접속되었음을 나타낸다.
② 엘리베이터를 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 200 OK, 10 Floor
엘리베이터가 10층으로 호출되었음을 나타낸다.
③ 엘리베이터가 가동 중인 상태에서 10층으로 호출한 상황
Client Request : CALL (Floor: 10)
Server Response : 301 Busy
현재 엘리베이터가 가동 중이기 때문에 Client의 Call 명령을 수행할 수 없음을 나타낸다.
④ 엘리베이터의 실시간 전력 사용량 확인
Client Request : INFO
Server Response : 403 Not have Authorization
권한이 없음을 나타낸다. (사용자모드이기 때문에)
⑤ 엘리베이터 가동모드 전환
Client Request : CTRL
Server Response : 403 Not have Authorization
권한이 없음을 나타낸다. (사용자모드이기 때문에)
⑥ EMP 접속해지
Client Request : LOUT
Server Response : 202 Log out the Management mode
사용자모드에서 로그아웃 되었음을 나타낸다.
(3) 오류 및 예외처리 (Server - 왼쪽, Client - 오른쪽)
① EMP 초기설정이 되기 전에 엘리베이터를 호출한 경우
Client Request : CALL
Server Response : 404 Not Connected
EMP 초기설정이 되지 않았음을 나타낸다.
② 존재하지 않은 ID를 입력한 경우
Client Request : INIT (ID: computer)
Server Response : 400 No Such User
엘리베이터 데이터베이스에 해당 사용자가 존재하지 않음을 나타낸다.
③ Password를 잘못 입력한 경우
Client Request : INIT (ID: iamtaesu, Password: abcd)
Server Response : 402 Illegal Password
엘리베이터 데이터베이스에 해당 사용자의 비밀번호가 일치하지 않음을 나타낸다.
④ EMP 초기설정 이후 존재하지 않는 명령어를 입력한 경우
Client Request : ABCD
Server Response : 300 Bad Request
존재하지 않는 명령어임을 나타낸다.