前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设备的Name与IP

设备的Name与IP

作者头像
Taishan3721
发布2021-10-20 11:34:58
5950
发布2021-10-20 11:34:58
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

欢迎关注VxWorks567

如转发 请标明出处!

VxWorks设备在启动时会给自己指定一个名字 - target name。后来这个名字去哪里了?

本文以Vx69为例

组件INCLUDE_NET_HOST_SETUP会把它保存起来,并提供函数gethostname()查询它

也可以动态修改这个名字 - sethostname()

汉族孩子上户口时,名字不能超过6个字。VxWorks设备呢?一般是64个字符。而如果你不给它起名字,WindRiver就叫它"vxTarget"

代码语言:javascript
复制
#define TARGET_NAME_DEFAULT "vxTarget" /* target name (tn) */
#define MAXHOSTNAMELEN 64
int gethostname
    (
    char  *name,
    size_t nameLen
    );
int sethostname
    (
    char *name,
    int   nameLen
    );

bootrom中还指定了一个host name,它去哪了?使用组件INCLUDE_NET_HOST_SHOW的hostShow()可以看到

同时看到,每个name还对应着自己的ip address。那在程序中如何获取这个信息呢

组件Host Table - INCLUDE_HOST_TBL提供了函数hostGetByName()

当然了,也可以反过来通过IP查询name - hostGetByAddr()

这个Host Table还可以维护更多的设备

Table内部用的是链表,因此对设备的数量没有限制

代码语言:javascript
复制
int hostGetByName
    (
    char *name
);
STATUS hostGetByAddr
    (
    int   addr,
    char *name
);
STATUS hostAdd
    (
    char *hostName,
    char *hostAddr
);
STATUS hostDelete
    (
    char *name,
    char *addr
);

而网络协议栈还提供了更丰富的API,例如:

代码语言:javascript
复制
struct hostent
    {
    char  *h_name;            /* official name of host */
    char **h_aliases;         /* alias list */
    int    h_addrtype;        /* host address type */
    int    h_length;          /* length of address */
    char **h_addr_list;       /* list of addresses from name server */
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
    };
struct hostent *gethostbyname
    (
    char *pName
    );
struct hostent *gethostbyaddr
    (
    char *pAddr,
    int   len,
    int   type
    );

有机会再慢慢研究吧

我是泰山 专注VX好多年!

一起学习 共同进步!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档