struct sockaddr 와 struct sockaddrin

struct sockaddr { unsigned short sa_family;     /* address family, AF_xxx */ char sa_data[14];                 /* 14 bytes of protocol address */ }; sa_family 는 주소 가족 으로 일반적으로 'AF xxx' 형식 이다.보통 AF 를 많이 쓰 는 것 같 아 요.INET。 sa_data 는 14 바이트 프로 토 콜 주소 입 니 다.이 데이터 구 조 는 bind, connect, recvfrom, sendto 등 함수 의 매개 변수 로 주소 정 보 를 표시 합 니 다.
그러나 일반 프로 그래 밍 에 서 는 이 데이터 구 조 를 직접 조작 하지 않 고 다른 sockaddr 와 등가 의 데이터 구 조 를 사용 합 니 다 sockaddrin (netinet / in. h 에서 정의): struct sockaddrin { short int sin_family;                      /* Address family */ unsigned short int sin_port;       /* Port number */ struct in_addr sin_addr;              /* Internet address */ unsigned char sin_zero[8];         /* Same size as struct sockaddr */ }; struct in_addr { unsigned long s_addr; };
typedef struct in_addr { union {             struct{                         unsigned char s_b1,                         s_b2,                         s_b3,                         s_b4;                         } S_un_b;            struct {                         unsigned short s_w1,                         s_w2;                         } S_un_w;             unsigned long S_addr;           } S_un; } IN_ADDR;
sin family 는 대체 프로 토 콜 족 을 말 합 니 다. socket 프로 그래 밍 에 서 는 AF INET sin port 만 포트 번호 (네트워크 바이트 순서 사용) sin addr 로 IP 주 소 를 저장 할 수 있 습 니 다. in addr 라 는 데이터 구 조 를 사용 하 는 sin zero 는 sockaddr 와 sockaddr in 두 데이터 구조 가 크기 가 같 도록 유지 하기 위 한 빈 바이트 입 니 다. s addr 는 네트워크 바이트 순서에 따라 IP 주 소 를 저장 합 니 다.
sockaddr in 과 sockaddr 는 병렬 구조 로 sockaddr in 을 가리 키 는 구조 체 의 지침 도 sockadd 의 구조 체 를 가리 키 며 대체 할 수 있 습 니 다. 즉, sockaddr in 을 사용 하여 필요 한 정 보 를 만 들 수 있 습 니 다. 마지막 으로 유형 변환 을 하면 bzero (char *) & my cock, sizeof (my cock)) 를 사용 할 수 있 습 니 다.; / / mysock 구조 체 이름 mysock. sa family = AF INET; mysock. sin addr. s addr = inet addr ("192.168.0.1") 초기 화;.. 변환 할 때 사용: (struct sockaddr *) mysock
sa_data     sa_family  
sa_family=AF_INET
sa_data sockaddr_in sin_addr sin_port
, sockaddr sockaddr_in
Sockfd socket socket ,my_addr IP sockaddr
;addrlen sizeof(struct sockaddr)。
structsockaddr socket :   
struct sockaddr {  
unsigned short sa_family; /* , AF_xxx */
char sa_data[14]; /* 14 */
};
   sa_family AF_INET, Internet(TCP/IP) ;
sa_data socket IP

:   
struct sockaddr_in {   
short int sin_family; /* */
   unsigned short int sin_port; /* */   
struct in_addr sin_addr;/* IP */  
unsigned char sin_zero[8]; /* 0 struct sockaddr */   
};    。sin_zero sockaddr_in struct
sockaddr , bzero() memset() 。 sockaddr_in sockaddr , sockaddr ,
sockaddr_in sockaddr ; 。

좋은 웹페이지 즐겨찾기