ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 yundreamÀÇ Endian ¹®¼1절. endian ¿¡ ´ëÇÑ ±âÃÊÁö½Ä¾Æ¸¶ ³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀ» Á¶±Ý ÇØº¸¾Ò´Ù¸é, Little-Endian, Big-Endian À̶ó´Â ¸»À» µé¾î º¸¾ÒÀ»°ÍÀÌ´Ù. ¶§·Î order byte, byte order ¶ó°í ¸»Çϱ⵵ Çϸç, ÀÛÀº ³¡µ¹ÀÌ, Å« ³¡µ¹ÀÌ(--;) ¶ó°í ¸»Çϱ⵵ ÇÑ´Ù. ÀÛÀº ³¡µ¹ÀÌ, Å« ³¡µ¹ÀÌ´Â ±èÄ¡ÇÏ ±³¼öÀÇ ¹ø¿ª¼¿¡¼ º¼¼ö ÀÖ´Â ´Ü¾îµéÀÌ´Ù. °á·ÐºÎÅÍ ¸»ÇÏÀÚ¸é ¿£µð¾È À̶õ ÄÄÇ»ÅÍ¿¡¼ µ¥ÀÌŸ°¡ ÀúÀåµÇ´Â ¼ø¼¸¦ ¸»ÇÏ´Â °ÍÀÌ´Ù. ÄÄÇ»ÅÍ¿¡¼ µ¥ÀÌŸ ÀúÀåÀº ¿©·¯ºÐµµ Àß ¾Æ½Ã´Ù ½ÃÇÇ byte ´ÜÀ§·Î ÀúÀåÀÌ µÈ´Ù. ±×·±µ¥ ÀÌ ´ÜÀ§ ÀúÀåÀ» ÇÒ¶§ °¢ Á¦Á¶¾÷ü(CPU)¿¡ µû¶ó¼ ÀúÀåÀÌ µÇ´Â ¼ø¼°¡ ¼·Î ´Ù¸£´Ù. ¿¹¸¦µé¾î ¿ì¸®°¡ ÀÚÁÖ »ç¿ëÇÏ´Â 32bit Á¤¼öÀÇ °æ¿ì Çѹø¿¡ 4byte ÀÇ µ¥ÀÌŸ°¡ ÀúÀåÀÌ µÇ´Âµ¥, À̶§ °¡Àå ³·Àº ¹ÙÀÌÆ®ºÎÅÍ ÀúÀåÀ» ÇÏ´Â ¹æ½ÄÀÌ ÀÖ°í, °¡Àå ³ôÀº ¹ÙÀÌÆ®ºÎÅÍ ÀúÀåÀ» ÇÏ´Â ¹æ½ÄÀÌ Á¸ÀçÇÑ´Ù. ÀüÀÚ¸¦ Little Endian À̶ó°í Çϸç, ÈÄÀÚ¸¦ Big Endian À̶ó°í ÇÑ´Ù. 1.1절. ÀÚ¼¼ÇÑ µ¥ÀÌŸ ¹æ½ÄÁï Little Endian ÀúÀ广½ÄÀÌ Àû¿ëµÉ°æ¿ì ´ÙÀ½°ú °°ÀÌ ÀúÀåµÇ°Ô µÈ´Ù.
±×·³ Á»´õ ½ÇÁ¦ÀûÀÎ ¿¹¸¦µé¾î º¸µµ·Ï ÇϰڴÙ. Little Endian À» Àû¿ëÇÏ´Â °¡Àå ´ëÇ¥ÀûÀÎ CPU´Â Intel °è¿ CPU À̸ç, Big Endian À» Àû¿ëÇÏ´Â °¡Àå ´ëÇ¥ÀûÀÎ CPU ´Â Sparc °è¿ CPU ÀÌ´Ù. ¿ì¸®´Â Endian ÀÇ Å×½ºÆ®¸¦ À§Çؼ °£´ÜÇÑ ½î¾²¸¦ Çϳª Á¦ÀÛÇÒ °ÍÀÌ´Ù. ¿¹Á¦ : endian.c
Linux ¿¡¼ À§ÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÈÄ ¸¸µé¾îÁø ÆÄÀÏÀ» test_bin_linux ·Î À̸§À» ¹Ù²Ù°í, Solaris ¿¡¼ ¸¸µé¾îÁø ÆÄÀÏÀº test_bin_solaris ·Î À̸§À» ¹Ù²Ù°í ³ª¼ od(1) ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼ ±×°ªÀ» È®ÀÎÇØ º¸¾Ò´Ù.
2절. Endian ÀÌ ½ÇÁ¦ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼ Áß¿äÇѰ¡Endian ¿¡ ÀÇÇÑ byte order Àº ÇØ´ç ½Ã½ºÅÛÀÇ CPU ¿¡¼ ½Å°æÀ» ¾²¹Ç·Î, ´ÜÁö ÇϳªÀÇ ½Ã½ºÅÛ¿¡¼¸¸ ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» ÇÑ´Ù¸é Endian ¿¡ ´ëÇØ¼ ÀüÇô ½Å°æ ¾µÇʿ䰡 ¾ø´Ù. ±×·¯³ª ³×Æ®¿÷ÇÁ·Î±×·¡¹ÖÀ» ÇÒ°æ¿ì À̱âÁ¾°£ÀÇ (¿¹¸¦ µé¾î Sparc °ú Intel) Åë½ÅÀ» ¿°µÎ¿¡ µÎ¾î¾ß¸¸ÇÑ´Ù. ÀÌ·²°æ¿ì Endian ¿¡ ½Å°æÀ» ½áÁÖÁö ¾ÊÀ¸¸é ÀüÇô ¾û¶×ÇÑ °á°ú¸¦ °¡Áö°í ¿À°Ô µÈ´Ù. 2.1절. ±×·³ ³×Æ®¿÷ »ó¿¡¼ ¾î¶² ¹®Á¦°¡ ¹ß»ýÇϴ°¡À̹ø¿¡´Â ¼¹ö Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ¼¹ö ÇÁ·Î±×·¥Àº Sparc ¼Ö¶ó¸®½º¿¡, Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥Àº Inten Linux ¿¡¼ °¢°¢ ÀÛµ¿Çϵµ·Ï ÇÒ°ÍÀÌ´Ù. ´ÙÀ½Àº ¼¹ö ÇÁ·Î±×·¥ÀÌ´Ù. server.c
´ÙÀ½Àº Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ´Ù. client.c
Ŭ¶óÀÌ¾ðÆ®´Â 123456789 ¸¦ º¸³»°í ¼¹ö´Â À̰ªÀ» ¹Þ¾Æ¼ Ãâ·ÂÇÏ´Â ´Ü¼øÇÑ ÀÏÀ»ÇÑ´Ù. ±×·³ °¢°¢ÀÇ ½î¾²¸¦ ¼Ö¶ó¸®½º¿Í ¸®´ª½º·Î ¿Å°Ü¼ ÄÄÆÄÀÏÈÄ ÀÛµ¿½ÃÄѺ¸µµ·Ï ÇÏÀÚ. ¼¹öÃø¿¡¼´Â ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©ÁÙ°ÍÀÌ´Ù.
±×·³ À̹®Á¦¸¦ ¾î¶»°Ô ÇØ°áÇØ¾ß ÇÒ±î. ÀÎÅ×³Ý »ó¿¡´Â ±×¾ß¸»·Î ´Ù¾çÇÑ ½Ã½ºÅÛÀÌ Á¸ÀçÇÏ°í ½Ã½ºÅÛ¸¶´Ù Endian Â÷À̰¡ Á¸ÀçÇҰǵ¥, 2.2절. ±×·³ Endian ¹®Á¦ÀÇ ÇØ°á¹æ¹ýÀº ?°¡Àå °£´ÜÇÑ ÇØ°á¹æ¹ýÀº Endian ÀÌ Big À̵ç Little À̵ç Çϳª·Î ÅëÀϽÃŰ´Â °Å°ÚÁö¸¸ ÀÌ°Ç »ç½Ç ºÒ°¡´ÉÇÏ´Ù. ±×·³ »ý°¢ÇÒ¼ö ÀÖ´Â ¹æ¹ýÀÌ °øÅëµÇ´Â Endian À¸·Î º¯È¯ ½ÃŲ´ÙÀ½¿¡ ÀÚ½ÅÀÇ µ¥ÀÌŸ¸¦ Àü¼ÛÇÏ´Â ¹æ¹ýÀÌ µÉ°ÍÀÌ´Ù. ±×·¯¸é Àü¼ÛÇÏ´Â ÃøÀ̳ª Àü¼Û¹Þ´Â ÃøÀ̳ª ÀÌ °øÅëµÇ´Â Endian À» ¾Ë°í ÀÖÀ» °ÍÀÓÀ¸·Î byte order ¸¦ ½Ãų¼ö ÀÖÀ»°ÍÀÌ´Ù. ±×·¡¼ network byte order À̶õ°ÍÀÌ Á¸ÀçÇÑ´Ù. Áï network ·Î µ¥ÀÌŸ¸¦ º¸³¾¶§´Â ¹«Á¶°Ç ÇϳªÀÇ Endian À¸·Î ÅëÀÏÀ» ½ÃŰ´Â °ÍÀÌ´Ù. network byte order ´Â Big Endian À» µû¸¥´Ù. ±×·¯¹Ç·Î ¿ì¸®´Â ½Ã½ºÅÛ¿¡ °ü°è¾øÀÌ ¹«Á¶°Ç byte ¸¦ Big Endian ¿¡ ¸Âµµ·Ï byte order ¸¦ ½ÃŲ´ÙÀ½¿¡ ³×Æ®¿÷À» ÅëÇØ¼ ¿ÜºÎ·Î º¸³»¸é µÈ´Ù. ¹Þ´Â Ãø¿¡¼´Â Àڱ⿡°Ô µé¾î¿À´Â Endian ÀÌ Big À¸·Î ÅëÀϵǾî ÀÖÀ½À¸·Î Big Endian À» ÀÚ½ÅÀÇ Endian ¿¡ ¸Âµµ·Ï byte order ½ÃÄÑÁÖ¸é µÉ°ÍÀÌ´Ù. C ´Â ÀÌ·¯ÇÑ byte order ¸¦ À§ÇÑ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. ÇÔ¼ö°¡ ÇÏ´Â ÀÏÀº ÀÚ½ÅÀÇ host byte order À» network byte order ¿¡ ¸Â°Ô º¯°æ½ÃÄÑÁÖ´Â °Í°ú, network byte order À» ÀÚ½ÅÀÇ host byte order ¿¡ ¸Â°Ô º¯°æ½ÃÄÑÁÖ´Â 2°¡Áö ±ºÀÇ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.
±×·¸´Ù¸é À§ÀÇ ½î½ºµé¿¡¼ port ÁöÁ¤À» À§Çؼ ¿Ö htons ¸¦ »ç¿ëÇÏ´ÂÁö¸¦ ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù.
ÀÌÁ¦ À§ÀÇ Äڵ带 ¾î¶»°Ô º¯°æ½ÃÄÑ¾ß ÇÒÁö °¨À» Àâ¾ÒÀ» °ÍÀÌ´Ù. data ¸¦ º¸³»´Â Ãø¿¡¼´Â htonl À» ÀÌ¿ëÇØ¼ host byte order ·Î º¯°æ½ÃÄÑÁÖ°í, ¹Þ´Â Ãø(¼¹ö) ¿¡¼´Â ntohl À» ÀÌ¿ëÇØ¼ network byte order ¸¦ Àڽſ¡°Ô ¸Âµµ·Ï º¯°æ½ÃÄÑÁÖ¸é µÈ´Ù. ´ÙÀ½°ú °°ÀÌ Äڵ带 °¢°¢ º¯°æ½ÃŰ¸é µÈ´Ù.
2.3절. ¶Ç ´Ù¸¥ ÇØ°áÃ¥Àº ¾ø³ª¿äbyte order ÇÔ¼ö¸¦ »ç¿ëÇØ¼ Little/Big Endian ¹®Á¦ÀÇ ÇØ°áÀº ÇßÁö¸¸, Á¶±Ý¸¸ »ý°¢Çغ¸¸é ÀÌ ¹æ¹ýÀÌ ²Ï ºÒÆíÇÒ¼ö ÀÖ´Ù´Â°É ¾Ë¼ö ÀÖ´Ù. µ¥ÀÌŸ¸¦ º¸³¾Àû¿£ ¹Ýµå½Ã Endian º¯È¯À» ÇØÁà¾ß ÇÑ´Ù. ²Ï ±ÍÂúÀº ÀÛ¾÷ÀÌ µÉ¼ö ÀÖ´Ù. Ȥ½Ã¶óµµ ½Ç¼ö·Î º¯È¯À» ÇÏÁö ¾ÊÀ»°æ¿ì¿¡´Â ¾î¶»°Ô µÉÁö ¾Ë¼ö ¾ø´Ù. ±×·¸´Ù¸é byte order ¿¡ ½Å°æ¾µÇÊ¿ä ¾øÀÌ byte ´ÜÀ§·Î µ¥ÀÌŸ¸¦ º¸³»¸é µÉ°ÍÀÌ´Ù. char ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. char Àº 1byte ÀÇ Å©±â¸¦ °¡ÁüÀ¸·Î byte order ¿¡ ½Å°æ¾µ Çʿ䰡 ¾øÀÌ »ç¿ë°¡´ÉÇÏ´Ù. ±×·¡¼ ¸¹Àº °æ¿ì ³×Æ®¿÷ Åë½Å ÇÁ·Î±×·¡¹ÖÀ» ÇÒ°æ¿ì char ¸¸À» ÀÌ¿ëÇØ¼ Åë½ÅÀ» Çϵµ·Ï ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ¿¹¸¦ µé¾î À§ÀÇ 12345678 À» int ÇüÀ¸·Î º¸³»´Â ´ë½Å ¹®ÀÚ¿·Î º¯È¯½ÃÄѼ Àü¼ÛÇÏ´Â °ÍÀÌ´Ù. ÀÌ·²°æ¿ì¿¡´Â Endian ¹®Á¦¿¡ ½Å°æ¾µÇʿ䰡 ¾øÀ»°ÍÀÌ´Ù. 2.4절. Endian üũÇϱâ´ÙÀ½°ú °°Àº °£´ÜÇÑ Äڵ带 ÀÌ¿ëÇØ¼ ½Ã½ºÅÛÀÇ Endian À» üũÇÒ¼ö ÀÖ´Ù. ¿¹Á¦ : endian_check.c
3절. °á·ÐÀÌ»ó Endian ¿¡ ´ëÇØ¼ °£´ÜÇÏ°Ô ¾Ë¾Æº¸¾Ò´Ù. º¸Åë int Çü°ú °°ÀÌ byte order °¡ ÇÊ¿äÇÑ µ¥ÀÌŸ Åë½ÅÀ» "binary Åë½ÅÀ» ÇÑ´Ù" ¶ó°í ¸»ÇÑ´Ù. ÃÖ±Ù¿¡´Â binary Åë½ÅÀ» »ç¿ëÇÏÁö ¾Ê°í ´ÜÁö text(char) ¸¸À» ÀÌ¿ëÇØ¼ Åë½ÅÀ» ÇÏ´Â°Ô Á»´õ ÀϹÝÀûÀÎ Ãß¼¼ÀÌ´Ù. ±×·¯³ª ¾î´À ¹æ½ÄÀ» äÅÃÇϵçÁö »ç¿ëÇϱ⿡ °£ÆíÇÑ ¹æ½ÄÀ» ÅÃÇÏ¸é µÉ°ÍÀÌ´Ù. 2 Âü°í¹®Çå |
|
||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|