转换ip
#include <stdio.h>
#include <arpa/inet.h>
int main() {
struct sockaddr_in addr;
struct sockaddr_in6 addr6;
const char* ipv4_addr = "192.168.31.2";
const char* ipv6_addr = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
// convert ipv4 address from text to binary form
if(inet_pton(AF_INET,ipv4_addr,&(addr.sin_addr))!=1) {
fprintf(stderr,"Invalid IPv4 address\n");
return 1;
}
if(inet_pton(AF_INET6,ipv6_addr,&(addr6.sin6_addr))!=1){
fprintf(stderr,"Invalid IPV6 address\n");
return 1;
}
printf("IPv4 address in binary form: 0x%x\n",addr.sin_addr.s_addr);
printf("Now the ipv6 address has been saved in addr6.sin6_addr");
//Now the ipv6 address has been saved in addr6.sin6_addr
puts("");
//convert binary form of ipv4 address to text form
char ipv4_addr_text[INET_ADDRSTRLEN];
char ipv6_addr_text[INET6_ADDRSTRLEN];
if(inet_ntop(AF_INET,&(addr.sin_addr),ipv4_addr_text,INET_ADDRSTRLEN)==NULL){
fprintf(stderr,"Error in converting IPv4 address to text form\n");
return 1;
}
if(inet_ntop(AF_INET6,&(addr6.sin6_addr),ipv6_addr_text,INET6_ADDRSTRLEN)==NULL){
fprintf(stderr,"Error in converting IPv6 address to text form\n");
}
printf("IPv4 address in text form: %s\n",ipv4_addr_text);
printf("IPv6 address in text form: %s\n",ipv6_addr_text);
return 0;
}
默认ip
#include <stdio.h>
#include <arpa/inet.h>
int main() {
struct sockaddr_in ipv4_addr;
ipv4_addr.sin_addr.s_addr = INADDR_ANY;
struct sockaddr_in6 ipv6_addr;
ipv6_addr.sin6_addr = in6addr_any;
char dst_ipv4[INET_ADDRSTRLEN];
char dst_ipv6[INET6_ADDRSTRLEN];
if(inet_ntop(AF_INET,&(ipv4_addr.sin_addr),dst_ipv4,INET_ADDRSTRLEN)==NULL) {
fprintf(stderr,"Error in converting IPv4 address to text form\n");
return 1;
}
if(inet_ntop(AF_INET6,&(ipv6_addr.sin6_addr),dst_ipv6,INET6_ADDRSTRLEN) == NULL) {
fprintf(stderr,"Error in converting ipv6 address to text form\n");
return 1;
}
printf("%s\n",dst_ipv4);
printf("%s\n",dst_ipv6);
return 0;
}