📄 gn_ipv46.c
字号:
#include "gai_hdr.h"/* * Handle either an IPv4 or an IPv6 address and port. *//* include gn_ipv46 */intgn_ipv46(char *host, size_t hostlen, char *serv, size_t servlen, void *aptr, size_t alen, int family, int port, int flags){ char *ptr; struct hostent *hptr; struct servent *sptr; if (hostlen > 0) { if (flags & NI_NUMERICHOST) { if (inet_ntop(family, aptr, host, hostlen) == NULL) return(1); } else { hptr = gethostbyaddr(aptr, alen, family); if (hptr != NULL && hptr->h_name != NULL) { if (flags & NI_NOFQDN) { if ( (ptr = strchr(hptr->h_name, '.')) != NULL) *ptr = 0; /* overwrite first dot */ } snprintf(host, hostlen, "%s", hptr->h_name); } else { if (flags & NI_NAMEREQD) return(1); if (inet_ntop(family, aptr, host, hostlen) == NULL) return(1); } } } if (servlen > 0) { if (flags & NI_NUMERICSERV) { snprintf(serv, servlen, "%d", ntohs(port)); } else { sptr = getservbyport(port, (flags & NI_DGRAM) ? "udp" : NULL); if (sptr != NULL && sptr->s_name != NULL) snprintf(serv, servlen, "%s", sptr->s_name); else snprintf(serv, servlen, "%d", ntohs(port)); } } return(0);}/* end gn_ipv46 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -