int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
एडीआर तर्क के लिए पारित वास्तविक संरचना पता परिवार पर निर्भर करेगी। sockaddr संरचना की तरह कुछ के रूप में परिभाषित किया गया है:सॉकडर में sa_data फ़ील्ड का उद्देश्य क्या है?
struct sockaddr {
sa_family_t sa_family;
char sa_data[14];
}
एक IPv4 एड्रेस (AF_INET) के लिए
तो, वास्तविक struct कि पारित हो जाएगा यह है:
/* Source http://linux.die.net/man/7/ip */
struct sockaddr_in {
sa_family_t sin_family; /* address family: AF_INET */
in_port_t sin_port; /* port in network byte order */
struct in_addr sin_addr; /* internet address */
};
/* Internet address. */
struct in_addr {
uint32_t s_addr; /* address in network byte order */
};
बाँध कोड sockaddr.sa_family
मूल्य पढ़ा करता है और उसके द्वारा प्राप्त मूल्य के आधार पर, sockaddr
संरचना को उपयुक्त संरचना में sockaddr_in
पर डाला जाएगा?
sa_data
क्यों 14 वर्णों पर सेट है? अगर मैं सही समझता हूं, तो sa_data
फ़ील्ड केवल एक ऐसा क्षेत्र है जिसमें परिवार के सभी प्रकार के पते को फिट करने के लिए पर्याप्त मेमोरी स्पेस होगा? संभवतः मूल डिजाइनरों ने अनुमान लगाया कि 14 वर्ण सभी भविष्य के प्रकारों के अनुरूप पर्याप्त होंगे।
https://en.wikipedia.org/wiki/Type_punning – user3386109