#include #include #include #include #define BUFSIZE 4096 // ¼ÒÄÏ ÇÔ¼ö ¿À·ù Ãâ·Â ÈÄ Á¾·á void err_quit(char *msg) { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER| FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL); MessageBox(NULL, (LPCTSTR)lpMsgBuf, msg, MB_ICONERROR); LocalFree(lpMsgBuf); exit(-1); } // ¼ÒÄÏ ÇÔ¼ö ¿À·ù Ãâ·Â void err_display(char *msg) { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER| FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL); printf("[%s] %s", msg, (LPCTSTR)lpMsgBuf); LocalFree(lpMsgBuf); } // »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅÍ ¼ö½Å ÇÔ¼ö int recvn(SOCKET s, char *buf, int len, int flags) { int received; char *ptr = buf; int left = len; while(left > 0){ received = recv(s, ptr, left, flags); if(received == SOCKET_ERROR) return SOCKET_ERROR; else if(received == 0) break; left -= received; ptr += received; } return (len - left); } class File_Client { private: int retval; // ¿©·¯ Åë½Å°£ ¸®ÅÏ°ªÀ» ÀúÀåÇÏ´Â º¯¼ö WSADATA wsa; // À©¼Ó SOCKET sock; // Ŭ¶óÀ̾ðÆ® ¼ÒÄÏ SOCKADDR_IN serveraddr; // ¼ÒÄÏ ±¸Á¶Ã¼ struct _timeb start, finish;// Àü¼Û ¼Ò¿ä ½Ã°£À» °è»êÇϱâ À§ÇÑ º¯¼ö // ÆÄÀÏ µ¥ÀÌÅÍ Àü¼Û¿¡ »ç¿ëÇÒ º¯¼ö char filename[256]; // ÆÄÀÏ À̸§ int currbytes; // ¼­¹ö¿¡¼­ ¹ÞÀº ÆÄÀÏÅ©±â int totalbytes; // ÆÄÀÏÀÇ Àüü Å©±â FILE *fp; // ÆÄÀÏ ±¸Á¶Ã¼ void File_SendName(); // ¼­¹ö¿¡ ¾î¶²ÆÄÀÏÀ» º¸³½´Ù°í Å뺸 void File_RecvSize(); // °°Àº ÆÄÀÏÀÌ ÀÖ´Ù¸é, ±× ÆÄÀÏÀÇ Å©±â°¡ ¿À°í, ¾Æ´Ï¸é 0ÀÌ ¿È bool File_SendSize(); // º¸³¾ ÆÄÀÏ »çÀÌÁî Á¤Çؼ­ ¼­¹ö¿¡ ÅëÇØ void File_Upload(); // ÆÄÀÏ ¾÷·Îµå °úÁ¤ public: File_Client(); // ÆÄÀÏ Å¬¶óÀ̾ðÆ® connect ÀÛ¾÷±îÁö ó¸® ~File_Client(); // ±âŸ ¼ÒÄÏ Á¾·áµî. ¸¶¹«¸® void File_SendProc(); // ±¸µ¿ ºÎºÐ };