ابزار کاربر

ابزار سایت


socket-programming:inet_ntop

تفاوت‌ها

تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.

پیوند به صفحه‌ی تفاوت‌ها

socket-programming:inet_ntop [2024/06/18 00:25] – ایجاد شد pejmansocket-programming:inet_ntop [2024/06/18 00:58] (فعلی) – حذف شد pejman
خط 1: خط 1:
-====== تابع ()inet_ntop ====== 
  
-از این تابع برای تبدیل Network-Byte-Order به شکل نمایشی (presntation) استفاده میشه. 
- 
-  #include <arpa/inet.h> 
-   
-  const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); 
- 
- 
-نمونه استفاده از ()inet_ntop در IPv4 : 
- 
-<code C> 
-#include <stdio.h> 
-#include <arpa/inet.h> 
- 
-int main() 
-{ 
- 
-        struct in_addr ia; 
- 
-        ia.s_addr = 0xEF9AA8C0;  // Network-Byte-Order of 192.168.154.239 
-        char ipv4[INET_ADDRSTRLEN]; 
- 
-        inet_ntop(AF_INET, &ia, ipv4, INET_ADDRSTRLEN); 
- 
-        printf("ipv4 : %s\n", ipv4); 
- 
-        return 0; 
-} 
-</code> 
- 
-خروجی 
- 
-  ipv4 : 192.168.154.239 
- 
-در مثال بالا برای سادگی ia.s_addr دستی مقدار دهی شده ولی در عمل این مقدار دهی توسط توابع دیگر انجام میشود و ما کافی ست با تابع ()inet_ntop آن را به شکل قابل نمایش در آوریم. 
- 
-در نمونه IPv6 ، ورودی inet_ntop را از inet_pton میگیریم : 
- 
-<code C> 
-#include <stdio.h> 
-#include <arpa/inet.h> 
- 
-int main() 
-{ 
- char src[INET6_ADDRSTRLEN] = "0000:0000:0000:0000:0000:FFFF:192.168.154.239"; 
- char ipv6[INET6_ADDRSTRLEN]; 
- struct in6_addr i6a; 
- 
- inet_pton(AF_INET6, src, &i6a); 
- 
- inet_ntop(AF_INET6, &i6a, ipv6, sizeof(ipv6)); 
- 
- printf("ipv6 = %s\n", ipv6); 
- 
- return 0; 
-} 
-</code> 
- 
-خروجی 
- 
-  ipv6 = ::ffff:192.168.154.239 
- 
-نکته: در مثال های فوق چون in_addr و in6_addr فقط یک عضو دارند، توانستیم فقط نام متغیر از نوع آنها را بنویسیم وگرنه باید بجای ia& باید مینوشتیم (ia.s_addr)& و بجای i6a& باید مینوشتیم (i6a.s6_addr)& که در شرایط فعلی این struct ها، هر دو شکل قابل استفاده است. 
socket-programming/inet_ntop.1718657759.txt.gz · آخرین ویرایش: 2024/06/18 00:25 توسط pejman

به جز مواردی که ذکر می‌شود، مابقی محتویات ویکی تحت مجوز زیر می‌باشند: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki