inet_pton inet_ntop inet_aton htonl
2015-03-01 11:07 sylar_liang 阅读(309) 评论(0) 编辑 收藏 举报#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> // memory zero #include <sys/types.h> #include <sys/socket.h> // AF_INET #include <arpa/inet.h> // inet_* 头文件 #include <netinet/in.h> // struct sockaddr_in int main(int argc, char **argv) { char szIP[] = "192.168.88.130"; struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); // inet_pton int ret = inet_pton(AF_INET, szIP, &addr.sin_addr); // 将 字符串 转为 网络字节序 printf("ret = %d.\n", ret); // ret = 1 printf("addr.sin_addr: %2X\n", addr.sin_addr); // 8258A8C0 printf("addr.sin_addr.s_addr: %2X\n", addr.sin_addr.s_addr); // 8258A8C0 unsigned long lip = 0x8258A8C0; // 主机序 printf("lip: %2X\n", lip); // inet_ntop 二进制整数 -> 点分十进制 char strTemp[20]; //存放点分十进制IP地址 if( inet_ntop(AF_INET, (void*)&lip, strTemp, (socklen_t )sizeof(strTemp)) != NULL) // 网络字节序输出 printf("strTemp = %s\n", strTemp); // strTemp = 192.168.88.130 // htonl lip = htonl(lip); printf("htonl(lip): %2X\n", lip); // C0A85882 // inet_aton in_addr myin; ret = inet_aton(strTemp, &myin); printf("ret = %d, strTemp = %s, inet_aton:%2X", ret, strTemp, myin.s_addr); // 网络字节序输入 myin.s_addr = 8258A8C0 getchar(); return 0; }