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λ‘ μ’
λ£λ₯Ό νλ©΄ λͺ¨λ νμΌ λμ€ν¬λ¦½ν°λ₯Ό μλμΌλ‘ λ«κ³ μ’
λ£νλ€.
}










