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로 종료를 하면 모든 파일    디스크립터를 자동으로 닫고 종료한다. 
} 
Retrieved from http://wiki.zeropage.org/wiki.php/ProjectVirush/Prototype
last modified 2021-02-07 05:24:06