inet_ntop.c

来自「klibc精简化的c程序库」· C语言 代码 · 共 55 行

C
55
字号
/* * inet/inet_ntop.c */#include <stdio.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in6.h>const char *inet_ntop(int af, const void *cp, char *buf, size_t len){	size_t xlen;	switch (af) {	case AF_INET:		{			const uint8_t *bp = (const uint8_t *)				&((const struct in_addr *)cp)->s_addr;			xlen = snprintf(buf, len, "%u.%u.%u.%u",					bp[0], bp[1], bp[2], bp[3]);		}		break;	case AF_INET6:		{			const struct in6_addr *s = (const struct in6_addr *)cp;			xlen = snprintf(buf, len, "%x:%x:%x:%x:%x:%x:%x:%x",					ntohs(s->s6_addr16[0]),					ntohs(s->s6_addr16[1]),					ntohs(s->s6_addr16[2]),					ntohs(s->s6_addr16[3]),					ntohs(s->s6_addr16[4]),					ntohs(s->s6_addr16[5]),					ntohs(s->s6_addr16[6]),					ntohs(s->s6_addr16[7]));		}		break;	default:		errno = EAFNOSUPPORT;		return NULL;	}	if (xlen > len) {		errno = ENOSPC;		return NULL;	}	return buf;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?