(OK) ip-str.c - 修改 IP 地址 (点分十进制) 某个字段 - strtok - struct sockaddr

xiaoxiao2021-02-28  113

#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int main(void) { char *token; char buf1[16]; char buf2[4][4]; char buf3[16]; int i = 0; struct sockaddr_in addr; memset(buf1, 0, 16); memset(buf2, 0, 16); memset(buf3, 0, 16); //buf = inet_ntoa(sin_dest.sin_addr); //sprintf(buf1, "%s", inet_ntoa(sin_dest.sin_addr)); sprintf(buf1, "%s", "112.26.0.8"); token = strtok(buf1, "."); while (token != NULL) { sprintf(buf2[i++], "%s", token); token = strtok(NULL, "."); } strcat(strcat(strcat(strcat(strcat(strcat(strcat(buf3,buf2[0]), "."), buf2[1]), "."), buf2[2]), "."), buf2[3]); inet_aton(buf3, &addr.sin_addr); printf("%s (%u)\n", inet_ntoa(addr.sin_addr), addr.sin_addr.s_addr); buf2[2][0] = '1'; memset(buf3, 0, 16); strcat(strcat(strcat(strcat(strcat(strcat(strcat(buf3,buf2[0]), "."), buf2[1]), "."), buf2[2]), "."), buf2[3]); inet_aton(buf3, &addr.sin_addr); printf("%s (%u)\n", inet_ntoa(addr.sin_addr), addr.sin_addr.s_addr); buf2[2][0] = '2'; memset(buf3, 0, 16); strcat(strcat(strcat(strcat(strcat(strcat(strcat(buf3,buf2[0]), "."), buf2[1]), "."), buf2[2]), "."), buf2[3]); inet_aton(buf3, &addr.sin_addr); printf("%s (%u)\n", inet_ntoa(addr.sin_addr), addr.sin_addr.s_addr); buf2[2][0] = '3'; memset(buf3, 0, 16); strcat(strcat(strcat(strcat(strcat(strcat(strcat(buf3,buf2[0]), "."), buf2[1]), "."), buf2[2]), "."), buf2[3]); inet_aton(buf3, &addr.sin_addr); printf("%s (%u)\n", inet_ntoa(addr.sin_addr), addr.sin_addr.s_addr); buf2[2][0] = '4'; memset(buf3, 0, 16); strcat(strcat(strcat(strcat(strcat(strcat(strcat(buf3,buf2[0]), "."), buf2[1]), "."), buf2[2]), "."), buf2[3]); inet_aton(buf3, &addr.sin_addr); printf("%s (%u)\n", inet_ntoa(addr.sin_addr), addr.sin_addr.s_addr); addr.sin_addr.s_addr = inet_addr("112.26.9.8"); printf("%s (%u)\n", inet_ntoa(addr.sin_addr), addr.sin_addr.s_addr); //--------------------------------------- const char *address = "255.255.255.255"; inet_aton(address, &addr.sin_addr); printf("%s (%u)\n", address, addr.sin_addr.s_addr); //--------------------------------------- return 0; }
转载请注明原文地址: https://www.6miu.com/read-65332.html

最新回复(0)