首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否将<netinet/in.h>协议转换为名称?

是否将<netinet/in.h>协议转换为名称?
EN

Stack Overflow用户
提问于 2020-10-13 19:57:19
回答 1查看 31关注 0票数 1

中定义了一长串协议:

代码语言:javascript
复制
/*
 * Protocols (RFC 1700)
 */
#define IPPROTO_IP              0               /* dummy for IP */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define IPPROTO_HOPOPTS 0               /* IP6 hop-by-hop options */
#endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
#define IPPROTO_ICMP            1               /* control message protocol */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define IPPROTO_IGMP            2               /* group mgmt protocol */
#define IPPROTO_GGP             3               /* gateway^2 (deprecated) */
#define IPPROTO_IPV4            4               /* IPv4 encapsulation */
#define IPPROTO_IPIP            IPPROTO_IPV4    /* for compatibility */
#endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
#define IPPROTO_TCP             6               /* tcp */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define IPPROTO_ST              7               /* Stream protocol II */

/* ... */

是否有将中定义的协议转换为名称的默认函数/调用?让chars[]作为回报的理想选择:

代码语言:javascript
复制
ipproto2str(IPPROTO_ICMP): "Control Message Protocol (ICMP)"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 20:04:36

你在找getprotobynumber()

代码语言:javascript
复制
#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>

int main(void) {
  struct protoent *p = getprotobynumber(IPPROTO_ICMP);
  if (p) {
    printf("IPPROTO_ICMP (%d) = %s\n", p->p_proto, p->p_name);
  } else {
    puts("Couldn't find IPPROTO_ICMP");
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64334791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档