mysql 基于c_linux-基于MYSQL的C程序实践
要求: 设计程序,使用TCP设计server端,可实现接收多个客户端发送的温度数值和湿度数值,并存储在数据库中。客户端每隔30秒发送一次数据,数据包括温度、湿度和时间戳。
建表:
create table exp3(
temporary int,
wet int,
date varchar(20)
);
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// 发送时间间隔, 单位秒
int sec = 30;
int insertdata(char* data) {
int ret;
MYSQL mySql;
MYSQL *pTempSql = NULL;
mysql_init(&mySql);
pTempSql = mysql_real_connect(&mySql, "localhost", "root", "123456", "exp", 3306, NULL, 0);
if (pTempSql != NULL) {
char insertDataStr[100] = "INSERT INTO exp3 VALUES(";
strcat(insertDataStr, data);
char t[20];
// 获得时间戳
sprintf(t, ", %ld", time(NULL));
strcat(insertDataStr, t);
strcat(insertDataStr, ");");
// printf("%s", insertDataStr);
ret = mysql_real_query(&mySql, insertDataStr, strlen(insertDataStr));
if (ret == 0) {
printf("insert ISMILELI info is success!\n");
} else {
printf("insert ISMILELI info is failure!\n");
}
mysql_close(&mySql);
} else {
printf("mysql_real_query():%s\n", mysql_error(pTempSql));
return -1;
}
}
// 客户端一
void client1(int signo) {
int cid = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in saddr = {0};
saddr.sin_family = AF_INET;
saddr.sin_port = htons("8080");
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int res = connect(cid, (struct sockaddr *) &saddr, sizeof(struct sockaddr));
char buf[128] = {0};
bzero(buf, sizeof(buf));
int rand_data = rand() % 10;
sprintf(buf, "%d, %d", 1, rand_data);
printf("%d, send data: %s\n", getpid(), buf);
send(cid, buf, strlen(buf), 0);
close(cid);
}
// 客户端二
void client2(int signo) {
int cid = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in saddr = {0};
saddr.sin_family = AF_INET;
saddr.sin_port = htons("8080");
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int res = connect(cid, (struct sockaddr *) &saddr, sizeof(struct sockaddr));
char buf[128] = {0};
bzero(buf, sizeof(buf));
int rand_data = rand() % 20 + 10;
sprintf(buf, "%d, %d", 2, rand_data);
printf("%d, send data: %s\n", getpid(), buf);
send(cid, buf, strlen(buf), 0);
close(cid);
}
void server() {
int sid = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in addr = {0};
addr.sin_family = AF_INET;
addr.sin_port = htons("8080");
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
int res = bind(sid,(struct sockaddr *)&addr,sizeof(struct sockaddr));
listen(sid,10);
char buf[128] = {0};
int cid;
while(1){
printf("pre recv data\n");
cid = accept(sid,NULL,NULL);
bzero(buf, sizeof(buf));
recv(cid,buf,sizeof(buf) - 1,0);
printf("get buf: %s\n", buf);
insertdata(buf);
close(cid);
}
close(sid);
}
int main(int argc, char *argv[]) {
int pid1, pid2;
pid1 = fork();
if (pid1 == 0) {
static time_t lasttime;
struct sigaction act;
union sigval tsval;
act.sa_handler = client1;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(50, &act, NULL);
time(&lasttime);
time_t nowtime;
while (1) {
/*获取当前时间*/
time(&nowtime);
/*和上一次的时间做比较,如果大于等于sec秒,则立刻发送信号*/
if(nowtime - lasttime >= sec){
/*向主进程发送信号,实际上是自己给自己发信号*/
sigqueue(getpid(), 50, tsval);
lasttime = nowtime;
}
}
}
pid2 = fork();
if (pid2 == 0) {
static time_t lasttime;
struct sigaction act;
union sigval tsval;
act.sa_handler = client2;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(50, &act, NULL);
time(&lasttime);
time_t nowtime;
while (1) {
/*获取当前时间*/
time(&nowtime);
/*和上一次的时间做比较,如果大于等于sec秒,则立刻发送信号*/
if(nowtime - lasttime >= sec){
/*向主进程发送信号,实际上是自己给自己发信号*/
sigqueue(getpid(), 50, tsval);
lasttime = nowtime;
}
}
}
server();
return 0;
}
mysql 基于c_linux-基于MYSQL的C程序实践相关推荐
- 小程序 node.js mysql_基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)...
高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+Think ...
- node 小程序 php,基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)...
高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+Think ...
- 【java毕业设计】基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码)——个人博客系统
基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSM+MySql的个人博客系统设计与实现,文章末尾附有本毕业设计的论文和源 ...
- node mysql商城开发_NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦
NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦 发布时间:2020-04-14 04:23:37 来源:51CTO 阅读:2894 作者:ch10mmt 高仿网易严选的微信 ...
- 【java毕业设计】基于Spring Boot+mysql的线上教学平台系统设计与实现(程序源码)-线上教学平台
基于Spring Boot+mysql的线上教学平台系统设计与实现(程序源码+毕业论文) 大家好,今天给大家介绍基于Spring Boot+mysql的线上教学平台系统设计与实现,本论文只截取部分文章 ...
- 【java毕业设计】基于javaEE+SSH+mysql+strust2的超市积分管理系统设计与实现(毕业论文+程序源码)——超市积分管理系统
基于javaEE+SSH+mysql+strust2的超市积分管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+mysql+strust2的超市积分管理系统设计 ...
- java毕业设计——基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现(毕业论文+程序源码)——彩票销售管理系统
基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现,文章末尾附有本毕业设计的 ...
- java毕业设计——基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码)——网上购书系统
基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+MySQL的网上购书系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...
- 【java毕业设计】基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现(毕业论文+程序源码)——供应链管理系统
基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现,文章末尾附有 ...
- java毕业设计——基于Java+Bootstrap+Mysql的电影评论网站设计与实现(毕业论文+程序源码)——电影评论网站
基于Java+Bootstrap+Mysql的电影评论网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Bootstrap+Mysql的电影评论网站设计与实现,文章末尾附有本毕 ...
最新文章
- MyEclipse极速优化
- 当鼠标滑过文本框自动选中输入框内容JS代码
- 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(八)
- ubuntu20.04中安装划词翻译_教你轻松玩转免安装的网页翻译插件“有道网页翻译2.0”...
- 工作205:修改记录取消文本提示ele提示
- 你真的懂线程同步么?
- uva 10562 	Undraw the Trees
- 重装系统后mac语言怎么改成中文?
- 用PS设计等高线效果的背景图片
- 大神u盘工具(win10PE)UEFI纯净版启动盘制作工具
- springboot工程中生成二维码(Java)
- 200多个JS小技巧
- element ui el-table单元格按需合并
- 数据库系统-数据库的完整性
- 【面试】北京航天无人机系统工程研究所
- 利用hexo和github搭建静态博客(一)
- ROS Couldn‘t find executable named xxx.py问题
- 售价80万!高合汽车,流淌法拉第FF的血液?
- Android模拟电话,虚拟电话来电模拟
- [Mac OS X] 如何在终端查看 Mac OS 版本信息