No older revisions available
No older revisions available
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로 종료를 하면 모든 파일 디스크립터를 자동으로 닫고 종료한다. }