본문 바로가기

TCP/IP

호스트pc(리틀엔디안) <-> 네트워크(빅엔디안)

네트워크 상에서는 빅엔디안을 사용
htons()함수 : 호스트에서 port번호(2바이트)를 네트워크로 바꿀 때 사용
ntohs()함수 : 네트워크에서 port번호(2바이트)를 호스트로 바꿀 때 사용
htonl()함수 : 호스트에서 IP주소(4바이트)를 네트워크로 바꿀 때 사용
ntohl()함수 : 네트워크에서 IP주소(4바이트)를 호스트로 바꿀 때 사용

h는 host, n은 network, s는 short(2byte), l은 long(4byte)


P  C                                              네트워크
리틀엔디안                                     빅엔디안

2byte(port번호)  --------------------->
                        htons()함수 사용

                       <--------------------
                        ntohs()함수 사용

4byte(IP 주소)   --------------------->
                        htonl()함수 사용

                      <---------------------
                        ntohl()함수 사용                        


#include <stdio.h>

int main()
{
  short host_port_order = 0x1234;
  short net_port_order;

  long host_add_order = 0x12345678;
  long net_add_order;

  net_port_order = htons(host_port_order);
  net_add_order = htonl(host_add_order);

  printf(" Host ordered port : %x\n", host_port_order);
  printf("Network ordered port : %x\n\n", net_port_order);

  printf(" Host ordered address : %x\n", host_add_order);
  printf("Network ordered address : %x\n", net_add_order);

  return 0;
}



'TCP/IP' 카테고리의 다른 글

TCP 클라이언트  (0) 2011.07.07
inet_addr()함수, (=inet_aton)  (0) 2011.07.01
gethostbyname() 함수  (0) 2011.07.01
inet_ntoa() 함수  (0) 2011.07.01
소켓의 생성과 해지  (0) 2011.06.29