네트워크 전송 방식을 하나로 통일한다

 

예로들어

 

 

 

 

      받는방법 12                                                     받는방법 12 

12하하 너 뭐해  -----------------------------------> 하하 너 뭐해 

 

=================================================

 

       받는방법 h23                                                받는 방법 12 

h23 뭐하냐니깐 ------------------------------------>  %$@#$??

 

    받는방법 h23                                                    받는 방법 12 

  ??????   <------------------------------------------- 뭔 개소리야?

 

보네는넘                                                         받는넘

 

다르면 쪼개기가 안되서 글자 나누기 않됨

동일 한 크기 조건을 넣어줘서  어디까진 주소로 딱 약속해야함

 

 

 

빅 엔디안(Big Endian)                                          |

상위 바이트 값을 작은 번지수에 저장                      |       거의 이거쓴단다

         

리틀 엔 디안(Little Endian)

 상위 바이트의 값을 큰 번지수에 저장

 

 

호스트 바이트 순서 

   CPU 별 데이터 저장방식을 의미함

 

네트워크 바이트 순서 

   통일된 데이터 송수신 기준을 의미함                   |

   빅 엔디안이 기준이다.                                     |                      거의 이거서 쓴단다

 

 

 

소켓 생성된 다음에는 걍  자동으로 잘된다

 

근데 소켓을 호스팅하는거는 내가 해줘야 자동됨  이거만 해주면됨

 

 

unsigned short htons(unsigned short);

unsigned short ntohs(unsigned short);

unsigned long htons(unsigned long);

unsigned long ntohs(unsigned long);

 

 

 

그 h(host) 가 호스트를 말아고 

  n(network)를 말한단다

 

앞에꺼를 뒤에꺼로 바꿔라 라는 뜻이라고한다

 

short 는 port 바꾸는거고

long 은 ip 바꾸는거라고한다

 

ㅇㅇ 그러테 

 

 

#include <stdio.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
	unsigned short host_port=0x1234;
    unsigned short net_port;
    unsigned long host_addr=0x12345678;
    unsigned long net_addr;
    
    net_port=htons(host_port);
    net_addr=hton1(hont_addr;
    
    printf("Host ordered port: %#x \n", host_port);
    printf("Network ordered port: %#x \n", net_port);
    printf("Host ordered address: %#1x \n", host_addr);
    printf("'Network ordered address: %#1x \n", net_addr);
    return 0;
}

 

중간에 있는게 정보 변환해서 저장하는듯

자동화 된거같음

위에꺼는 리틀엔디안 

 

결과가 프린트 2개같으면 리틀

 

프린트 2개가 다르면 빅엔디안 ㅇㅋ?

블로그 이미지

Or71nH

,