๋น์ ์ด์ ๋คํธ์ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ด๋(Beej's Guide to Network Programming)์ 4๋ฒ์งธ์ IPv4์์ IPv6๋ก ๋์ด๊ฐ๊ธฐ๊ฐ ์๋ค. 4. Jumping from IPv4 to IPv6
1. ๋จผ์ getaddrinfo()๋ฅผ ์ฌ์ฉํด์ struct sockaddr ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค, ์์ผ๋ก ๊ตฌ์กฐ์ฒด ์ฒด์๋ฃ์ง๋ง๊ณ . ์ด๊ฑด IP ๋ฒ์ ผ-์๊ทธ๋ ธ์คํฑ(IP ๋ฒ์ ผ์ ์ ์ ์๋ค๋ ์ด๋ก ์ธ๊ฐ?)์ ์ ์ง์์ผ์ฃผ๊ณ , ๊ทธ ๋ค์ ๋ง์ ์์ ๋ค์ ์ํด๋ ๋๊ฒ ํด์ค.
2. IP๋ฒ์ ผ์ด๋ ๊ด๋ จ๋ ํ๋์ฝ๋ฉ๋ ๊ฑฐ ๊ฐ์ ์ ๋ถ ์ฐพ์์ ๋์ฐ๋ฏธ ํจ์๊ฐ์ง๊ณ ๊ณ ์ณ.
3. AF_INET๋ฅผ AF_INET6๋ก ๋ฐ๊พผ๋ค.
4. PF_INET๋ฅผ PF_INET6๋ก ๋ฐ๊พผ๋ค.
5. INADDR_ANY assignments๋ in6addr_any assignments๋ก ๋ฐ๊พผ๋ค. ์ด๊ฒ๋ค์ ์๋ก ์ฝ๊ฐ ๋ค๋ฅด๋ค.
struct sockaddr_in sa;
struct sockaddr_in6 sa6;
sa.sin_addr.s_addr = INADDR_ANY; // use my IPv4 address
sa6.sin6_addr = in6addr_any; // use my IPv6 address
6. IN6ADDR_ANY_INIT ๊ฐ์ ๊ตฌ์กฐ์ฒด in6_addr์ ํ ๋นํ๋ค.
struct in6_addr ia6 = IN6ADDR_ANY_INIT;
7. struct sockaddr_in ๋์ struct sockaddr_in6๋ฅผ ์ฐ๊ณ (๊ตฌ์กฐ์ฒด structs ์ฐธ๊ณ )
9. in_addr ๋์ struct in6_addr๋ฅผ ์ด๋ค. (๊ตฌ์กฐ์ฒด structs ์ฐธ๊ณ )
11. inet_aton()์ด๋ inet_addr() ๋์ inet_pton().
12. inet_ntoa() ๋์ inet_ntop().
13. gethostbyname() ๋์ getaddrinfo().
15. gethostbyaddr() ๋์ superior getnameinfo()๋ฅผ ์ฌ์ฉ.
(gethostbyaddr()๋ฅผIPv6์์ ์ฌ์ ํ ์ฌ์ฉํ ์ ์์ง๋ง)
16. INADDR_BROADCAST๋ ์ด์ ๋์ด์ ์๋์ํ๋ค. IPv6์ ๋ฉํฐ์บ์คํธ๋ฅผ ์ฌ์ฉํด๋ด.
17. ๋.
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
epoll() ๋ฉํฐ ์์ฝ ์๋ฒ (0) | 2021.02.13 |
---|---|
๋๋ธ๋ฒํผ๋์ํํ VS ์ํํ (0) | 2021.02.03 |
Double Buffered Circular Queue๋ก ํจํท ์ฃผ๊ณ ๋ฐ๊ธฐ 2 (0) | 2021.02.03 |
Double Buffered Circular Queue๋ก ํจํท ์ฃผ๊ณ ๋ฐ๊ธฐ 1 (0) | 2021.02.03 |
๋๋ธ ๋ฒํผ๋ง๊ณผ ์ํ ๋ฒํผ๋ง ์์ (Double Buffering and Circular Buffering Examples) (0) | 2021.02.03 |