Class DongYang Socket Ver 1.00
License by Software 8
<ÇÔ¼ö ¸ñ·Ï>
¢º CSKERRCODE
¢º CloseSocket
¢º Accept
¢º Connect
¢º Write
¢º Read
¢º GetServerFD
¢º GetClientFD
¢º GetErrCode
|
¿øÇü |
enum CSKERRCODE { CSK_NOTERR, CSK_AREADYCONN, CSK_NOTCONN, CSK_BINDERR, CSK_NOTCREATESOCKET }; |
|
¸Å°³º¯¼ö |
- |
|
¸®Åϰª |
- |
|
ÇÏ´ÂÀÏ |
¿¡·¯ÄÚµå ¸ðÀ½ CSK_NOTERR : ¿¡·¯ ¾øÀ½ CSK_AREADYCONN : ÀÌ¹Ì ¿¬°áµÇ¾î ÀÖÀ½ CSK_NOTCONN : ¿¬°áÀÌ µÇ¾îÀÖÁö ¾ÊÀ½ CSK_BINDERR : bind ÇÔ¼ö ¿¡·¯ ¹ß»ý CSK_NOTCREATESOCKET : ¼ÒÄÏÀ» »ý¼º ÇÒ ¼ö ¾øÀ½ |
|
¿¹Á¦ |
CDYSOCKET cServer;
if( cServer.CreateServerSocket() == FALSE ) { PrintErrMessage( cServer.GetErrCode() ); return -1; } |
|
Âü°í |
GetErrCodeÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿¡·¯Äڵ带 ¾ò¾î ¿Ã ¼ö ÀÖ°í, PrintErrMessage¸¦ ÅëÇØ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. |
|
¿øÇü |
BOOL CloseSocket( void ) |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
´Ý±â ¼º°ø½Ã TRUE, ½ÇÆÐ½Ã FALSE |
|
ÇÏ´ÂÀÏ |
¿¸° ȤÀº Á¢¼ÓµÈ ¼ÒÄÏÀ» ´Ý°í, »ç¿ëµÈ ¸ðµç º¯¼ö¸¦ ÃʱâÈ ÇÑ´Ù. |
|
¿¹Á¦ |
CDYSOCKET cServer; cServer.CreateServerSocket(); ...(»ý·«) cServer.CloseSocket(); |
|
Âü°í |
GetErrCodeÇÔ¼ö¸¦ ÅëÇØ ½ÇÆÐ ¿øÀÎÀ» ãÀ» ¼ö ÀÖ´Ù. |
|
¿øÇü |
int Accept( void ) |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
Á¢¼ÓµÈ Client_FD °ªÀ» ¸®ÅÏÇØÁØ´Ù. ¸¸¾à °ªÀÌ 0º¸´Ù ÀÛÀ» °æ¿ì ¿¬°á¿¡ ½ÇÆÐ ÇÑ °æ¿ìÀÌ´Ù. |
|
ÇÏ´ÂÀÏ |
³»ºÎÀûÀ¸·Î ¼ÒÄÏÀÇ accept¶õ ÇÔ¼ö¸¦ È£Ãâ ÇØÁØ´Ù. ÀÌ ÇÔ¼ö¸¦ È£Ãâ ÈÄ ²À ¿¡·¯ °Ë»ç¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ¿¹Á¦ ÂüÁ¶ |
|
¿¹Á¦ |
CDYSOCKET cServer; cServer.CreateServerSocket(); if( cServer.Accept() < 0 ) { printf("accept faile.\n"); return -1; } |
|
Âü°í |
- |
|
¿øÇü |
int Connect( void ) |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
0º¸´Ù ÀÛÀ» °æ¿ì ¿¬°á ½ÇÆÐ |
|
ÇÏ´ÂÀÏ |
³»ºÎÀûÀ¸·Î ¼ÒÄÏÀÇ connect¶õ ÇÔ¼ö¸¦ È£Ãâ ÇØÁØ´Ù. ÀÌ ÇÔ¼ö¸¦ È£Ãâ ÈÄ ²À ¿¡·¯ °Ë»ç¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ¿¹Á¦ ÂüÁ¶ |
|
¿¹Á¦ |
CDYSOCKET cClient; cClient.CreateClientSocket(); if( cServer.Connect() < 0 ) { printf("Connect faile.\n"); return -1; } |
|
Âü°í |
- |
|
¿øÇü |
int Write( char* Msg, int len ) |
|
¸Å°³º¯¼ö |
Msg : Àü¼ÛÇÒ ¹®ÀÚ¿ len : Àü¼ÛÇÒ ¹®ÀÚ¿ ±æÀÌ |
|
¸®Åϰª |
½ÇÁ¦·Î Àü¼ÛµÈ ¹®ÀÚ¿ ±æÀÌ 0º¸´Ù ÀÛÀº °ªÀÏ °æ¿ì Àü¼Û ½ÇÆÐ |
|
ÇÏ´ÂÀÏ |
Msg¸¦ ¼¹ö(ȤÀº Ŭ¶óÀ̾ðÆ®)·Î Àü¼ÛÇÑ´Ù. |
|
¿¹Á¦ |
CDYSOCKET cServer; char MSG[] = "HIHI";
cServer.CreateServerSocket(); if( cServer.Accept() < 0 ) { printf("Cannot accept.\n"); return -1; } if( Write( MSG, strlen( MSG ) ) < 0 ) { printf("Cannot send message : %s\n", MSG); return -1; }
cServer.CloseSocket(); |
|
Âü°í |
|
|
¿øÇü |
int Read( char* Msg, int len ) |
|
¸Å°³º¯¼ö |
Msg : Àü¼Û¹ÞÀ» ¹®ÀÚ¸¦ ÀúÀåÇÒ º¯¼ö len : Àü¼Û¹ÞÀ» ¹®ÀÚ¿ ±æÀÌ |
|
¸®Åϰª |
½ÇÁ¦·Î Àü¼Û ¹ÞÀº ¹®ÀÚ¿ ±æÀÌ 0º¸´Ù ÀÛÀº °ªÀÏ °æ¿ì Àü¼Û ½ÇÆÐ |
|
ÇÏ´ÂÀÏ |
Msg¸¦ ¼¹ö(ȤÀº Ŭ¶óÀ̾ðÆ®)·ÎºÎÅÍ Àü¼Û¹Þ´Â´Ù. |
|
¿¹Á¦ |
CDYSOCKET cServer; char MSG[10];
cServer.CreateServerSocket(); if( cServer.Accept() < 0 ) { printf("Cannot accept.\n"); return -1; } if( Read( MSG, 10 ) < 0 ) { printf("Cannot read message.\n"); return -1; } printf("Read : %s\n", MSG ); cServer.CloseSocket(); |
|
Âü°í |
|
|
¿øÇü |
BOOL CreateClientSocket( char *haddr, int port = 9999, int AddressType = PF_INET, int ConnectType = SOCK_STREAM ) |
|
¸Å°³º¯¼ö |
haddr = Á¢¼ÓÇÒ ¼¹ö IP ÁÖ¼Ò port = Á¢¼ÓÇÒ ¼¹öÀÇ port ¹øÈ£ (»ý·«½Ã 9999) AddressType = ÀÎÅÍ³Ý ÁÖ¼Ò ¹æ½Ä(»ý·«½Ã PF_INET) ConnectType = Á¢¼Ó ¹æ½Ä(»ý·«½Ã SOCK_STREAM) <¸®´ª½º ¼ÒÄÏÀÇ socket( AddressType, ConnectType, 0 )ÇÔ¼ö> |
|
¸®Åϰª |
¼º°ø½Ã TRUE, ½ÇÆÐ½Ã FALSE ½ÇÆÐÀÌÀ¯´Â GetErrCodeÇÔ¼ö¸¦ ÅëÇØ È®ÀÎÇÒ ¼ö ÀÖ´Ù. |
|
ÇÏ´ÂÀÏ |
Ŭ¶óÀÌ¾ðÆ®¿ë ¼ÒÄÏÀ» ¸¸µé¾îÁØ´Ù. Server_Addr ±¸Á¶Ã¼¸¦ ÀÚµ¿À¸·Î ¼³Á¤À» ÇØÁÖ³ª, ¼öµ¿À¸·Î º¯°æÇÏ°í ½ÍÀ» °æ¿ì SetServerAddrÀ̶õ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. |
|
¿¹Á¦ |
CDYSOCKET cClient;
cClient.CreateClientSocket( "127.0.0.1" ); |
|
Âü°í |
|
|
¿øÇü |
BOOL CreateServerSocket ( int port = 9999, int backlog = 0, int AddressType = PF_INET, int ConnectType = SOCK_STREAM ) |
|
¸Å°³º¯¼ö |
port = ¿ÀǽÃų Æ÷Æ®¹øÈ£(»ý·«½Ã 9999) backlog = listenÇÔ¼ö È£Ãâ½Ã Ŭ¶óÀÌ¾ðÆ® ´ë±âÀÚ ¼ö(»ý·«½Ã 0) AddressType = ÀÎÅÍ³Ý ÁÖ¼Ò ¹æ½Ä(»ý·«½Ã PF_INET) ConnectType = Á¢¼Ó ¹æ½Ä(»ý·«½Ã SOCK_STREAM) <¸®´ª½º ¼ÒÄÏÀÇ socket( AddressType, ConnectType, 0 )ÇÔ¼ö> |
|
¸®Åϰª |
¼º°ø½Ã TRUE, ½ÇÆÐ½Ã FALSE ½ÇÆÐÀÌÀ¯´Â GetErrCodeÇÔ¼ö¸¦ ÅëÇØ È®ÀÎÇÒ ¼ö ÀÖ´Ù. SetServerAddrÀ̶õ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Server_Addr±¸Á¶Ã¼¸¦ º¯°æ½ÃÄѵµ Àû¿ëÀº µÇÁö ¾Ê´Â´Ù. |
|
ÇÏ´ÂÀÏ |
¼¹ö¿ë ¼ÒÄÏÀ» ¸¸µé¾îÁØ´Ù. |
|
¿¹Á¦ |
CDYSOCKET cServer;
cClient.CreateServerSocket(); |
|
Âü°í |
|
|
¿øÇü |
void SetServerAddr ( short family, u_long addr, u_short port ) { Server_Addr.sin_family = family; Server_Addr.sin_addr.s_addr = addr; Server_Addr.sin_port = port; }; |
|
¸Å°³º¯¼ö |
|
|
¸®Åϰª |
|
|
ÇÏ´ÂÀÏ |
Class ¾ÈÀÇ Server_Addr ±¸Á¶Ã¼¸¦ ¼öµ¿À¸·Î º¯°æÇØÁØ´Ù. |
|
¿¹Á¦ |
CDYSOCKET cClient; cClient.CreateClientSocket(); cClient.SetServerAddr( PF_INET, inet_addr( "127.0.0.1" ), htons( 1234 ) ); |
|
Âü°í |
|
|
¿øÇü |
inline int GetServerFD( void ) { return Server_FD; }; |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
Á¢¼ÓµÈ ServerÀÇ FD¸¦ ³Ñ°ÜÁØ´Ù. |
|
¿øÇü |
inline int GetClientFD( void ) { return Client_FD; }; |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
Á¢¼ÓµÈ ServerÀÇ FD¸¦ ³Ñ°ÜÁØ´Ù. |
|
¿øÇü |
inline struct sockaddr_in GetServerAddr( void ) { return Server_Addr; }; |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
ServerÀÇ AddrÁ¤º¸¸¦ ´ãÀº ±¸Á¶Ã¼¸¦ ¸®ÅÏÇØÁØ´Ù. |
|
¿øÇü |
inline struct sockaddr_in GetClientAddr( void ) { return Client_Addr; }; |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
ClientÀÇ AddrÁ¤º¸¸¦ ´ãÀº ±¸Á¶Ã¼¸¦ ¸®ÅÏÇØÁØ´Ù. |
|
¿øÇü |
inline CSKERRCODE GetErrCode( void ) { return err; }; |
|
¸Å°³º¯¼ö |
void |
|
¸®Åϰª |
¸¶Áö¸·À¸·Î ¹ß»ýµÈ ¿¡·¯ ÄÚµå °ªÀ» ¸®ÅÏÇØÁØ´Ù. |
|
Âü°í |
PrintErrMessage ÇÔ¼ö¿Í °°ÀÌ »ç¿ëÇϸé À¯¿ëÇÏ´Ù. |
|
¿øÇü |
void PrintErrMessage ( CSKERRCODE errcode ) |
|
¸Å°³º¯¼ö |
errcode = GetErrCode ÇÔ¼ö¸¦ ÅëÇØ ¾òÀº ¿¡·¯ÄÚµå °ª |
|
¸®Åϰª |
void |
|
ÇÏ´ÂÀÏ |
errcode °ªÀ» ³Ö¾îÁÖ¸é ±×¿¡ ÇØ´çÇÏ´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇØÁØ´Ù. |
|
¿¹Á¦ |
CDYSOCKET cServer; if( cServer.CreateServerSocket() == FALSE ) cServer.PrintErrMessage( cServer.GetErrCode() ); |
|
Âü°í |
|
¿øÇü |
void CloseClientFD( void ) |
|
ÇÏ´ÂÀÏ |
Client ¼ÒÄϸ¸ ´Ý´Â´Ù. |
|
Âü°í |
Server ¼ÒÄÏÀ» ´ÝÀ¸·Á¸é Client ¼ÒÄϵµ °°ÀÌ ´ÝÇô¾ß ÇÑ´Ù. CloseSocket ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù. |