inet_ntop函数的简单实现及调用
来源:互联网 发布:数控车床编程入门下载 编辑:程序博客网 时间:2024/06/05 20:50
日前在学习大神之作《Unix网络编程》,并尝试将书中代码coding并运行。
今天仿写的是inet_ntop()函数,位于原书P61页,该函数可实现网络字节序的二进制值到点分十进制字符串的转换。
其中,字母n代表numeric,格式存在于套接口地址结构中的二进制值;
字母p代表presentation,格式通常是ASCII串。
以下代码为inet_ntop()的简单实现及调用,且仅支持IPv4。
运行结果例如:
$ ./a.out 0x816fa8c0
numeric: 0x816fa8c0
presentation: 192.168.111.129
作为一只小小菜鸟,在学习的路上还望各位大牛多多指正
#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <string.h>#define INET_ADDRLEN 20const char* simplified_inet_ntop(int family, const void *addrptr, char *strptr, int len){ unsigned char temp_str[INET_ADDRLEN]; memset(temp_str, 0,INET_ADDRLEN); const unsigned char* temp_addrptr = (const unsigned char*)addrptr; if(family == AF_INET) { snprintf(temp_str, sizeof(temp_str),"%d.%d.%d.%d", *temp_addrptr,*(temp_addrptr+1),*(temp_addrptr+2),*(temp_addrptr+3)); if(strlen(temp_str) >= len) { return NULL; }else { memcpy(strptr,temp_str, strlen(temp_str)); return strptr;} } else { printf("protocol not supported!\n"); return NULL; }}int main(int argc, char *argv[]){ unsigned char str[INET_ADDRLEN]; memset(str, 0, INET_ADDRLEN); struct in_addr addr; memset(&addr, 0, sizeof(addr)); if(argc == 2) { sscanf(argv[1], "%x", &addr.s_addr); } else { printf("Usage: ./a.out 0xXXXXXXXX\r\n"); exit(1); } if(simplified_inet_ntop(AF_INET,(const void *)&addr, str, INET_ADDRLEN) == NULL) { printf("inet_ntop error for %s \r\n", argv[1]); exit(1); } else { printf("numeric: 0x%x \r\n",addr.s_addr); printf("presentation: %s \r\n",str); exit(0); }}
0 0
- inet_ntop函数的简单实现及调用
- inet_pton函数和inet_ntop函数的用法及简单实现
- inet_ntop函数的定义
- DLL的简单实现及调用
- 【实现&调用】实现可被简单调用的python函数
- inet_pton和inet_ntop函数
- inet_pton和inet_ntop函数
- inet_pton和inet_ntop函数
- inet_pton和inet_ntop函数
- Linux函数--inet_pton / inet_ntop
- inet_pton、inet_ntop函数
- inet_pton、inet_ntop函数
- Linux函数--inet_pton / inet_ntop
- inet_pton()&inet_ntop(),Linux下的IP地址转换函数
- LoadRunner简单应用之:C++ DLL的实现及调用
- python调用c语言函数的一种简单实现方法
- python--函数--简单函数调用实现
- windows inet_ntop inet_pton可参考linux下的实现
- robotframwork测试框架实施分布式自动化测试
- 2
- 接口及以太网链路配置与管理——1
- laravel5 入门
- 3
- inet_ntop函数的简单实现及调用
- 假设淘宝网上某商品A在任一时刻t内若有人浏览,则该商品在下一时刻t+1内无人浏览的概率为0.35(即下一时刻的浏览情况仅与当前时段相关)
- TCP/IP协议栈 ARP和RARP协议
- eclipse里面配置热部署
- 4
- angular
- 5
- JavaWeb学习——Session
- 05 识别毒酒——几种算法和编码方式的分析和比较