一:函数原型
#include <arpa/inet.h>
in_addr_t inet_addr(const char *cp);
int inet_aton(const char *string, struct in_addr *addr);
char *inet_ntoa(struct in_addr in);
uint32_t htonl(uint32_t);
uint16_t htons(uint16_t);
uint32_t ntohl(uint32_t);
uint16_t ntohs(uint16_t);
二:使用
#include <stdio.h>
#include <arpa/inet.h>
int main() {
struct in_addr addr;
char ip_str1[50] = "192.168.11.215";
char *ip_str2;
printf("ip_str1 = %s\n", ip_str1);
addr.s_addr = inet_addr(ip_str1);
printf("inet_addr(ip_str1) = %d\n", addr.s_addr);
inet_aton(ip_str1, &addr);
printf("inet_aton(ip_str1) = %d\n", addr.s_addr);
ip_str2 = inet_ntoa(addr);
printf("inet_ntoa(addr) = %s\n", ip_str2);
int num = 0x1234;
unsigned short us_num = htons(num);
unsigned long ul_num = htonl(num);
printf("int num = 0x%x\n", num);
printf("htons(num) = 0x%x\n", us_num);
printf("htonl(num) = 0x%x\n", ul_num);
printf("ntohs(num) = 0x%x\n", ntohs(us_num));
printf("ntohl(num) = 0x%x\n", ntohl(ul_num));
return 0;
}
Output
ip_str1 = 192.168.11.215
inet_addr(ip_str1) = -687101760
inet_aton(ip_str1) = -687101760
inet_ntoa(addr) = 192.168.11.215
int num = 0x1234
htons(num) = 0x3412
htonl(num) = 0x34120000
ntohs(num) = 0x1234
ntohl(num) = 0x1234