请教关于:嵌入式web和程序间通信问题

zh十七 2012-05-28 09:58:19
目前从事一嵌入式web开发,采用Boa+cgi的方式。
有两个问题向朋友们请教一下:
----------------------------------------------
1.关于程序结构
打算采用这样的结构:
(1)每个web页面向后台发数据的时候多传递一个id号,指示需要调用的函数
(2)后台一个与页面借口的程序Main获取id号,并调用对应的功能函数(func_id)
(3)在函数func_id中进行逻辑处理。
3.1>读取数据文件
3.2>或者功能设备上的常驻程序通信
3.3>返回前台需要的数据

请用经验的朋友给些意见,谢谢!
----------------------------------------------
2.关于程序间通信。
因为需要与设备上的常驻程序通信,也阅读了一些IPC机制的文章,请有经验的朋友给些意见!

----------------------------------------------
...全文
113 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zh十七 2012-05-30
  • 打赏
  • 举报
回复
====================回复信息========================
1.上面朋友提到的进程间通信是采用socket方式,
那是像我那样将所有数据打包为一个结构 + func_id 进行发送吗?
【func_id 意指业务标识,即外部程序收到信息后,解释成自己的数据结构,并根据func_id进行对应的业务处理】

2.cJSON是,(阅读中) 好像资料不多,还没有明白这个东西是做什么用的。是解析前台web页面传入的数据吗?

===================程序结构======================
下面是我思考的程序结构,有意见的朋友请给些回复,或者指出我的错误,谢谢!

<---weba,发送data + id_A
2.main()
<---weba,发送data + id_B...id_N

2.1 main中获取id号并判断
2.2 main中根据id号调用对应函数 func_A 或者 func_B...func_N
****************************
3. func_N()开始
3.1 获取前台传递来的数据(cgic)
3.2 进行本模块逻辑处理(本模块需要的一些处理,例如一些逻辑检查)

3.2 读取存储的数据文件(如果有需要)
3.3 调用向外部程序发送数据程序 msg_snd_N() (如果有需要)
3.4 等待外部程序处理sleep(2) *****不知道这样是否会有问题?
3.5 读取外部程序处理结构或是返回的数据 read_resp_from_server()
3.6 调用页面数据返回程序 func_rtn_N(...)
****************************
4. 页面数据返回程序 func_rtn_N(...) 开始
4.1 在此程序中返回前台页面需要的数据。
4.2 func_rtn_N(...)结束

********
3.7 func_N()结束
********
2.3 main()结束

=================数据结构 通信机制========================
下面是我打算采用的数据结构、通信机制、及其他技术,有意见的朋友请给些回复,或者指出我的错误,谢谢!

1. cgic解析web页面数据
计划使用cgic库,解析web页面(Boa 服务器)通过环境变量传递的参数

2. 采用文本方式进行数据存储
因为是一嵌入式设备,所以需要传递的参数并不多,如果采用表结构的方式可能四张表tb_a,tb_b,tb_c,tb_d,
因为没有在设备上应用数据库的经验,也担心影响性能,所以数据是采用文本的方式进行存储

3. 数据结构采用结构体方式抽象
对应的四张表可以使用四个结构体表示:str_a,str_b,str_c,str_d

4. 进程间通信
(参考Beginning Linux Programming(Linux程序设计)一书中的CD程序C/S传送方式)
4.1 因为计算了一下,通信数据发送在1K以下,而消息队列定义有8K,所以考虑使用消息队列的方式传递。

4.2 将所有数据合并为一个大的结构体用于消息发送
typedef struct
{
str_a;
str_b;
str_c;
str_d;
}str_db;

4.3 通过msgsnd()发送消息
定义改善消息的结构为:
typedef struct
{
int msg_type;
str_db str_val
}msg_snd;

====================================================
石头翔子 2012-05-28
  • 打赏
  • 举报
回复
刚好前一阵做过这东西
主程序,做完备的功能
然后,做一个小的代理程序,它作为CGI的部分,为WEB提供服务。
它将WEB请求发送给主程序,并将答复转交回WEB。

数据结构的部分,使用cJSON处理成字符串

进程间通讯是用的socket

还不错,运行良好,非常方便明了

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧