socket编程之inet_addr和inet_ntoa

inet_addr 将字符串形式的IP地址 -> 网络字节顺序  的整型值

inet_ntoa 网络字节顺序的整型值 ->字符串形式的IP地址

 

 1 #define _WINSOCK_DEPRECATED_NO_WARNINGS
 2 #include<WinSock2.h>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 #pragma comment(lib, "ws2_32.lib")
 7 
 8 int main()
 9 {
10     WORD wVersionRequested;
11     WSADATA wsaData;
12     int err;
13 
14     wVersionRequested = MAKEWORD(1, 1);
15 
16     err = WSAStartup(wVersionRequested, &wsaData);
17     if (err != 0) {
18         return 0;
19     }
20 
21 
22     char ip1[] = "192.168.0.74";
23     char ip2[] = "211.100.21.179";
24     struct in_addr addr1, addr2;
25     long l1, l2;
26     l1 = inet_addr(ip1);   //将字符串形式的IP地址 -> 网络字节顺序  的整型值
27     l2 = inet_addr(ip2);
28     printf("IP1: %s\n IP2: %s\n", ip1, ip2);
29     printf("Addr1: %ld\n Addr2: %ld\n", l1, l2);
30 
31     memcpy(&addr1, &l1, 4); //复制4个字节大小  
32     memcpy(&addr2, &l2, 4);
33     printf("%s <--> %s\n", inet_ntoa(addr1), inet_ntoa(addr2)); //注意:printf函数自右向左求值、覆盖  
34     printf("%s\n", inet_ntoa(addr1)); //网络字节顺序的整型值 ->字符串形式的IP地址  
35     printf("%s\n", inet_ntoa(addr2));
36 
37     getchar();
38     return 0;
39

 

posted @ 2018-07-16 10:19  淡墨&青衫  阅读(20614)  评论(0编辑  收藏  举报