Class DongYang Socket     Ver 1.00

License by Software 8


<ÇÔ¼ö ¸ñ·Ï>

¢º CSKERRCODE

¢º CloseSocket

¢º Accept

¢º Connect

¢º Write

¢º Read

¢º CreateClientSocket

¢º CreateServerSocket

¢º SetServerAddr

¢º GetServerFD

¢º GetClientFD

¢º GetServerAddr

¢º GetClientAddr

¢º GetErrCode

¢º PrintErrMessage

¢º CloseClientFD


¢º CSKERRCODE

¿øÇü

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¸¦ ÅëÇØ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.

¢º CloseSocket

¿øÇü

BOOL CloseSocket( void )

¸Å°³º¯¼ö

void

¸®Åϰª

´Ý±â ¼º°ø½Ã TRUE, ½ÇÆÐ½Ã FALSE

ÇÏ´ÂÀÏ

¿­¸° ȤÀº Á¢¼ÓµÈ ¼ÒÄÏÀ» ´Ý°í, »ç¿ëµÈ ¸ðµç º¯¼ö¸¦ ÃʱâÈ­ ÇÑ´Ù.

¿¹Á¦

CDYSOCKET cServer;

cServer.CreateServerSocket();

    ...(»ý·«)

cServer.CloseSocket();

Âü°í

GetErrCodeÇÔ¼ö¸¦ ÅëÇØ ½ÇÆÐ ¿øÀÎÀ» ãÀ» ¼ö ÀÖ´Ù.

¢º Accept

¿øÇü

int Accept( void )

¸Å°³º¯¼ö

void

¸®Åϰª

Á¢¼ÓµÈ Client_FD °ªÀ» ¸®ÅÏÇØÁØ´Ù.

¸¸¾à °ªÀÌ 0º¸´Ù ÀÛÀ» °æ¿ì ¿¬°á¿¡ ½ÇÆÐ ÇÑ °æ¿ìÀÌ´Ù.

ÇÏ´ÂÀÏ

³»ºÎÀûÀ¸·Î ¼ÒÄÏÀÇ accept¶õ ÇÔ¼ö¸¦ È£Ãâ ÇØÁØ´Ù.

ÀÌ ÇÔ¼ö¸¦ È£Ãâ ÈÄ ²À ¿¡·¯ °Ë»ç¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ¿¹Á¦ ÂüÁ¶

¿¹Á¦

CDYSOCKET cServer;

cServer.CreateServerSocket();

if( cServer.Accept() < 0 )

{

      printf("accept faile.\n");

      return -1;

}

Âü°í

-

¢º Connect

¿øÇü

int Connect( void )

¸Å°³º¯¼ö

void

¸®Åϰª

0º¸´Ù ÀÛÀ» °æ¿ì ¿¬°á ½ÇÆÐ

ÇÏ´ÂÀÏ

³»ºÎÀûÀ¸·Î ¼ÒÄÏÀÇ connect¶õ ÇÔ¼ö¸¦ È£Ãâ ÇØÁØ´Ù.

ÀÌ ÇÔ¼ö¸¦ È£Ãâ ÈÄ ²À ¿¡·¯ °Ë»ç¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ¿¹Á¦ ÂüÁ¶

¿¹Á¦

CDYSOCKET cClient;

cClient.CreateClientSocket();

if( cServer.Connect() < 0 )

{

      printf("Connect faile.\n");

      return -1;

}

Âü°í

-

¢º Write

¿øÇü

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();

Âü°í

 

¢º Read

¿øÇü

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();

Âü°í

 

¢º CreateClientSocket

¿øÇü

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" );

Âü°í

 

¢º CreateServerSocket

¿øÇü

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();

Âü°í

 

¢º SetServerAddr

¿øÇü

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 ) );

Âü°í

 

¢º GetServerFD

¿øÇü

inline int GetServerFD( void ) { return Server_FD; };

¸Å°³º¯¼ö

void

¸®Åϰª

Á¢¼ÓµÈ ServerÀÇ FD¸¦ ³Ñ°ÜÁØ´Ù.

¢º GetClientFD

¿øÇü

inline int GetClientFD( void ) { return Client_FD; };

¸Å°³º¯¼ö

void

¸®Åϰª

Á¢¼ÓµÈ ServerÀÇ FD¸¦ ³Ñ°ÜÁØ´Ù.

¢º GetServerAddr

¿øÇü

inline struct sockaddr_in GetServerAddr( void ) { return Server_Addr; };

¸Å°³º¯¼ö

void

¸®Åϰª

ServerÀÇ AddrÁ¤º¸¸¦ ´ãÀº ±¸Á¶Ã¼¸¦ ¸®ÅÏÇØÁØ´Ù.

¢º GetClientAddr

¿øÇü

inline struct sockaddr_in GetClientAddr( void ) { return Client_Addr; };

¸Å°³º¯¼ö

void

¸®Åϰª

ClientÀÇ AddrÁ¤º¸¸¦ ´ãÀº ±¸Á¶Ã¼¸¦ ¸®ÅÏÇØÁØ´Ù.

¢º GetErrCode

¿øÇü

inline CSKERRCODE GetErrCode( void ) { return err; };

¸Å°³º¯¼ö

void

¸®Åϰª

¸¶Áö¸·À¸·Î ¹ß»ýµÈ ¿¡·¯ ÄÚµå °ªÀ» ¸®ÅÏÇØÁØ´Ù.

Âü°í

PrintErrMessage ÇÔ¼ö¿Í °°ÀÌ »ç¿ëÇϸé À¯¿ëÇÏ´Ù.

¢º PrintErrMessage

¿øÇü

void PrintErrMessage ( CSKERRCODE errcode )

¸Å°³º¯¼ö

errcode = GetErrCode ÇÔ¼ö¸¦ ÅëÇØ ¾òÀº ¿¡·¯ÄÚµå °ª

¸®Åϰª

void

ÇÏ´ÂÀÏ

errcode °ªÀ» ³Ö¾îÁÖ¸é ±×¿¡ ÇØ´çÇÏ´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇØÁØ´Ù.

¿¹Á¦

CDYSOCKET cServer;

if( cServer.CreateServerSocket() == FALSE )

     cServer.PrintErrMessage( cServer.GetErrCode() );

Âü°í

GetErrCode

¢º CloseClientFD

¿øÇü

void CloseClientFD( void )

ÇÏ´ÂÀÏ

Client ¼ÒÄϸ¸ ´Ý´Â´Ù.

Âü°í

Server ¼ÒÄÏÀ» ´ÝÀ¸·Á¸é Client ¼ÒÄϵµ °°ÀÌ ´ÝÇô¾ß ÇÑ´Ù.

CloseSocket ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù.