#ifndef _UTIL_SOCKET_H_ #define _UTIL_SOCKET_H_ // 2008/02/12 // made by Choi JinYong(2007/05/21) // support nonblocking socket // result code // 1 : success // -1 : socket error(create) // -2 : connection timeout // -3 : select return error code // -4 : connect error occur int sock_connect(const char* ip, int port, int timeout_ms = 5000); // µ¥ÀÌÅÍ°¡ µµÂøÇÒ¶§±îÁö ÃÖ´ë timeout_ms½Ã°£±îÁö ±â´Ù·È´Ù°¡ // µ¥ÀÌÅÍ°¡ µµÂøÇÏ¸é µµÂøÇѸ¸Å­¸¸ Àо ¹ÝȯÇÑ´Ù. // ±æÀ̸¦ ÁöÁ¤ÇÒ °æ¿ì´Â sock_recv()¸¦ »ç¿ëÇϼ¼¿ä. // > 0 : recv size // 0 : timeout // -1 : socket error // -2 : select error int sock_recv_wait(int sock, char* buf, int max, int timeout_ms = 2000); // timeout_ms½Ã°£µ¿¾È size¸¸Å­À» Àоî¿Â´Ù. // timeout_ms°¡ °æ°ú µÇ°Å³ª size¸¸Å­ Àоî¿À¸é Á¾·á // return : // -1 : socket error // > 0 : recv size int sock_recv(int sock, char* buf, int size, int timeout_ms = 2000); // ÃÖ´ë timeout_ms½Ã°£µ¿¾È line¼ö¸¸Å­À» ¹Þ´Â´Ù. // ¹Ýȯ°ªÀº ÀÐÀº µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ®¼ö // ** ¹Ýȯ°ª ¸¶Áö¸·¿¡´Â 0¹®ÀÚ°¡ ºÙ¿©ÁÝ´Ï´Ù.(Àüü°¡ ¹®ÀÚ¿­ 󸮱⶧¹®¿¡) // -1 : socket error // -2 : select error int sock_recv_lines(int sock, char* buf, int max, int line, int timeout_ms = 4000); int sock_send_format(int sock, const char* fmt, ...); int sock_send_loop(int sock, const char* buf, int size, DWORD timeout_ms = 1000); #endif