2013-01-09 3 views
2

IN_ADDR에서 S_un을 (를) 이해하려고합니다. 유형에 대한소켓, IN_ADDR에서 S_un을 이해하십시오.

Output

정보 :

S_un_b 
An IPv4 address formatted as four u_chars. 
S_un_w 
An IPv4 address formatted as two u_shorts. 
S_addr 
An IPv4 address formatted as a u_long. 

내가 S_un_w과의 s_addr 빌드 얼마나 이해할 수없는 내 IP는 127.0.0.1 때이 출력입니다. S_un_b가 논리이면, 내 IP 주소의 각 옥텟은 unsigned char로 변환됩니다. 그러나 2 개의 unsinged shorts와 unsigned long build는 어떻게 될까요? 아니면 그들은 127001을이 변수들에 memcopy 했습니까?

답변

3

이것은 단지 합집합이므로 동일한 데이터를 세 가지 다른 표현으로 보여줍니다.

16777343 = 0x100007F ==> 01 | 00 | 00 | 7f 

그것은 엔디안 포맷이다 그것을 보는 다른 방법은 16 진수 값으로서 4 바이트 정수 (의 s_addr)를 조회 (해당에서 0x7f = 127) 기억한다.

+0

및 0x0100 및 007f 등의 단어 – dmaij

+0

감사합니다.하지만 왜이 작업을 수행할까요? byte []로 출력하는 것이 더 쉽지 않았습니까? – Laurence

+0

나는 그것이 더 간단한 지 모른다. 나는 그것이 사용법에 달려 있다고 생각한다. 정의 된 구조는 각 개별 바이트에 대한 간단한 액세스를 제공합니다. 소켓 프로그래밍에서 (일부는 ... 많지는 않음) 아무 것도 단순화하지는 못했지만 어쩌면 바이트 배열 배열이 필요하지 않을 수도 있습니다. –

관련 문제