string的IP类型转in_addr类型
请问该如何转换,谢谢啊
例如
“172.0.0.1”转in_addr结构
[解决办法]
- C/C++ code
#include <Winsock2.h> #include <stdio.h> int main() { in_addr ipAddr; ipAddr.S_un.S_addr = inet_addr("127.0.0.1"); printf("\n%u", ipAddr.S_un); return 0; }
[解决办法]
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
in_addr_t inet_addr(const char *cp);
in_addr_t inet_network(const char *cp);
char *inet_ntoa(struct in_addr in);
struct in_addr inet_makeaddr(int net, int host);
in_addr_t inet_lnaof(struct in_addr in);
in_addr_t inet_netof(struct in_addr in);
[解决办法]
inet_aton()函数
int inet_aton(const char*cp,struct in_addr *inp)
1.函数作用:inet_ation()函数将在cp中存储的点分十进制字符串类型的IP地址,转换为二进制的IP地址,转换后的值保存在指针inp指向的结构struct in_addr中。
2.形参
const char *cp:指向字符类型的IP地址。例如“192.168.1.11”
struct in_addr *inp:指向二进制的网络字节顺序的IP地址
structin_addr{
unsignedlong s_addr
}
[解决办法]
简单用inet_aton函数就可以了:
- C/C++ code
#include <netinet/in.h>int main(int argc, char* argv[]){ char* cp = "172.0.0.1"; struct in_addr inp; inet_aton(cp, &inp); return 0;}
[解决办法]
inet_aton
[解决办法]
参考:inet_aton和inet_network和inet_addr三者比较
[解决办法]