int main(int argc, char *argv[]) { if (2 != argc) { printf("Usage: ./a.out <ip address>\n"); } char buf[64]; bzero(buf, sizeof(buf)); if (0 >= my_inet_pton(AF_INET, argv[1], (void *)buf)){ printf("Conver error\n"); } printf("network addr string: %d\n", buf); return 0; }
int main(int argc, char **argv) { int sockfd = 0; struct sockaddr_in servaddr; if (argc < 2) { err_quit("usage: ./a.out <IPaddress>"); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); //将一个无符号短整型的主机数值转换为网络字节顺序 my_inet_pton(AF_INET, MCAST_IP, &servaddr.sin_addr); //十进制IP转二进制 //创建一个套接字 sockfd = my_socket(AF_INET, SOCK_DGRAM, 0); dg_cli(stdin, sockfd, (SA *) &servaddr, sizeof(servaddr)); exit(0); }
int main(int argc, char **argv) { int sockfd = 0; struct sockaddr_in servaddr; if (argc != 2) { err_quit("usage: ./udpcli <IPaddress>"); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); my_inet_pton(AF_INET, argv[1], &servaddr.sin_addr); // servaddr.sin_addr.s_addr = htonl(argv[1]); sockfd = my_socket(AF_INET, SOCK_DGRAM, 0); tu8_19dg_cli(stdin, sockfd, (SA *)&servaddr, sizeof(servaddr)); exit(0); }
/* ascii2prefix */ prefix_t * ascii2prefix (int family, char *string) { u_long bitlen, maxbitlen = 0; char *cp; struct in_addr sin; #ifdef HAVE_IPV6 struct in6_addr sin6; #endif /* HAVE_IPV6 */ int result; char save[MAXLINE]; if (string == NULL) return (NULL); /* easy way to handle both families */ if (family == 0) { family = AF_INET; #ifdef HAVE_IPV6 if (strchr (string, ':')) family = AF_INET6; #endif /* HAVE_IPV6 */ } if (family == AF_INET) { maxbitlen = 32; } #ifdef HAVE_IPV6 else if (family == AF_INET6) { maxbitlen = 128; } #endif /* HAVE_IPV6 */ if ((cp = strchr (string, '/')) != NULL) { bitlen = atol (cp + 1); /* *cp = '\0'; */ /* copy the string to save. Avoid destroying the string */ assert (cp - string < MAXLINE); memcpy (save, string, cp - string); save[cp - string] = '\0'; string = save; if (bitlen < 0 || bitlen > maxbitlen) bitlen = maxbitlen; } else { bitlen = maxbitlen; } if (family == AF_INET) { if ((result = my_inet_pton (AF_INET, string, &sin)) <= 0) return (NULL); return (New_Prefix (AF_INET, &sin, bitlen)); } #ifdef HAVE_IPV6 else if (family == AF_INET6) { // Get rid of this with next IPv6 upgrade #if defined(NT) && !defined(HAVE_INET_NTOP) inet6_addr(string, &sin6); return (New_Prefix (AF_INET6, &sin6, bitlen)); #else if ((result = inet_pton (AF_INET6, string, &sin6)) <= 0) return (NULL); #endif /* NT */ return (New_Prefix (AF_INET6, &sin6, bitlen)); } #endif /* HAVE_IPV6 */ else return (NULL); }