ProjectVirush/Rule์ ๋ง์กฑํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ๋กํ ํ์
์ ๋ง๋ ๋ค.
์ง์ญ ๋จ์๋ก ์ด๋ฆ, ์์ฃผ ๊ฐ์ฒด์, ๊ธฐ๋ณธ ํญ์ฒด ๋ณด์ ๋, ํน์ ๋ฐ์ด๋ฌ์ค ๊ฐ์ฒด์์ ๊ทธ์ ํด๋นํ๋ ์ต๋ ํญ์ฒด ๋ณด์ ๋์ ๊ฐ์ง๋ค.
์ง์ญ ๊ฐ ๋๋คํ ์ซ์์ ์์ฃผ ์ด๋์ด ์ผ์ด๋๋ค.
๋ฐ์ด๋ฌ์ค๋ ์ฆ์ ์๋, ์ ๋ณต๊ธฐ, ๋
์ฑ์ ๊ฐ์ง๋ค. ์ด๋ ์๊ฐ์ ๊ดํ ํจ์(f(t))์ด๋ค.
Client Framework ¶
~cpp //Project -> Setting -> LINK ๋ฉ๋ด -> Object/library modules: ์ ๋๋ถ๋ถ์ ws2_32.lib ๋ฅผ ์ถ๊ฐํ๋ค. #include <stdio.h> #include <winsock2.h> #define PORT 9999 // ์๋ฒ์ 9999๋ฒ ํฌํธ๋ฅผ ์ฐ๋ค #define BACKLOG 5 #define SERVER_IP "127.0.0.1" void error(char *buf) { puts(buf), exit(1); } main(){ WSADATA wsaData; SOCKET server_sock; // ์๋ฒ์ socket์ ์์ฑ SOCKADDR_IN server_addr; // ๋คํธ์ํฌ์ ์ ๋ณด๋ฅผ ๋ด์ structure ์์ฑ. char msg[] = "My name is Na Hwidong,."; char question[200]; int queslen; if( WSAStartup(MAKEWORD(2,2), &wsaData) == -1 ) error("WSAStartup Error"); // socket ์ค์ // ํ๋ก๊ทธ๋๋จธ๋ ์ด๊ฒ์ ํตํด ๋คํธ์ํฌ์ ๋ํ๋ฅผ ํ๋ค. server_sock = socket(AF_INET, SOCK_STREAM, 0); if( server_sock == -1 ) error("server socket error"); // ๋คํธ์ ์ ๋ณด ์ค์ // ์ด๊ฒ์ ํ๋ก๊ทธ๋จ์ด socket๊ณผ ์ฐ๊ฒฐํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค. memset((SOCKADDR_IN *)&server_addr, 0, sizeof(SOCKADDR_IN)); // struct sockaddr_in -> SOCKADDR_IN server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); // ๋ก์ปฌ ์ฃผ์๋ก ์ค์ ํ๋ค. server_addr.sin_port = htons(PORT); // ์๋ฒ์ ์ฐ๊ฒฐํ๋ค. ์๋๋ ํด๋ณด์. if( connect(server_sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1 ) fprintf(stderr, "์๋ฒ์ connect ํ ์ ์์ต๋๋ค."), exit(1); for( int i = 0 ; i < 3 ; i++ ){ // ์ฐ๊ฒฐํ๊ณ ๋ญ ํด์ผ์ง ๊ทธ๋ฅ ์์๋ค..;; queslen = recv( server_sock, question, sizeof(question), 0); question[queslen] = '\0'; printf( "I have to answer the next question. %s\n", question); if( send(server_sock, msg, sizeof(msg), 0) == -1 ) fprintf(stderr, "send error"); printf( "I sent an answer. The answer is %s\r\n", msg); system("pause"); } WSACleanup(); exit(0); // exit๋ก ์ข ๋ฃ๋ฅผ ํ๋ฉด ๋ชจ๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์๋์ผ๋ก ๋ซ๊ณ ์ข ๋ฃํ๋ค. }