当前位置:首页 > 公众号精选 > 嵌入式大杂烩
[导读]关注「Linux大陆」,选择「星标公众号」一起进步!之前为了方便测试部门保存一些测试数据,需要临时开发一个简单的nanomsgserver,与板子端的client在局域网内进行通信,接收client数据并保存。关于nanomsg的简单使用介绍可查看往期文章:一个实用通信库的简单使...

关注「Linux大陆」,选择「星标公众号」一起进步!

之前为了方便测试部门保存一些测试数据,需要临时开发一个简单的nanomsg server,与板子端的client在局域网内进行通信,接收client数据并保存。关于nanomsg的简单使用介绍可查看往期文章:一个实用通信库的简单使用分享

作为server端,需要绑定电脑的IP,不同的电脑IP是不一样的,所以使用不同的电脑时需要修改IP才能正常使用这个server程序。

在不需要重新编译程序的情况下,有如下两种方法可以满足这个需求:

  • 把IP写在配置文件里,比如ini格式的配置文件里,然后server程序读取配置文件里的IP,再进行绑定。
  • server程序自动获取IP地址并绑定。
下面分别使用这两种方法:

从配置文件中读取IP地址

配置文件的格式有很多,如JSON、INI等。这里我选用的是INI格式的配置文件,.ini 文件是 Initialization File 的缩写,即初始化文件。INI文件由节、键、值组成,注解使用分号表示(;)。例如:

[Section1 Name]
KeyName1_1=value1_1 ;这是注释
KeyName1_2=value1_2
[Section2 Name]
KeyName2_1=value2_1
KeyName2_2=value2_2
这里我们使用inih解析器来对INI文件进行解析。

inih:一个C 语言编写的 INI 文件解析器。

inih解析器的地址:

https://github.com/benhoyt/inih

同时,inih解析器也已经被收录于大杂烩资源汇总贴中:

https://gitee.com/zhengnianli/EmbedSummary

inih的使用很简单,下面一起来看一下。

下载得到的inih内容如图所示:

ini.cini.h 放到我们的工程下即可。这里我们使用一个测试工程:

同时,新建一个 ip.ini 文件存放于工程目录下。ip.ini 文件的内容如:

[ip] ;Section1
ip_addr = 192.168.1.103

[test] ;Section2
name = ZhengN
num = 66
下面我们编写代码test.c来解析这个文件:

// 微信公众号:嵌入式大杂烩
#include 
#include 
#include 
#include "ini.h"

typedef struct
{

    const char* ip_addr;
    const char* name;
    int num;
} configuration;

static int handler(void* user, const char* section, const char* name,
                   const char* value)

{
    configuration* pconfig = (configuration*)user;

    #define MATCH(s, n) strcmp(section, s) == 0 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭
关闭