要求: 设计程序,使用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程序实践相关推荐

  1. 小程序 node.js mysql_基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)...

    高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+Think ...

  2. node 小程序 php,基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)...

    高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+Think ...

  3. 【java毕业设计】基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码)——个人博客系统

    基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSM+MySql的个人博客系统设计与实现,文章末尾附有本毕业设计的论文和源 ...

  4. node mysql商城开发_NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦

    NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦 发布时间:2020-04-14 04:23:37 来源:51CTO 阅读:2894 作者:ch10mmt 高仿网易严选的微信 ...

  5. 【java毕业设计】基于Spring Boot+mysql的线上教学平台系统设计与实现(程序源码)-线上教学平台

    基于Spring Boot+mysql的线上教学平台系统设计与实现(程序源码+毕业论文) 大家好,今天给大家介绍基于Spring Boot+mysql的线上教学平台系统设计与实现,本论文只截取部分文章 ...

  6. 【java毕业设计】基于javaEE+SSH+mysql+strust2的超市积分管理系统设计与实现(毕业论文+程序源码)——超市积分管理系统

    基于javaEE+SSH+mysql+strust2的超市积分管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+mysql+strust2的超市积分管理系统设计 ...

  7. java毕业设计——基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现(毕业论文+程序源码)——彩票销售管理系统

    基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+MySQL的电脑彩票销售管理系统设计与实现,文章末尾附有本毕业设计的 ...

  8. java毕业设计——基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码)——网上购书系统

    基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+MySQL的网上购书系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  9. 【java毕业设计】基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现(毕业论文+程序源码)——供应链管理系统

    基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+mysql的百货中心供应链管理系统设计与实现,文章末尾附有 ...

  10. java毕业设计——基于Java+Bootstrap+Mysql的电影评论网站设计与实现(毕业论文+程序源码)——电影评论网站

    基于Java+Bootstrap+Mysql的电影评论网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Bootstrap+Mysql的电影评论网站设计与实现,文章末尾附有本毕 ...

最新文章

  1. MyEclipse极速优化
  2. 当鼠标滑过文本框自动选中输入框内容JS代码
  3. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(八)
  4. ubuntu20.04中安装划词翻译_教你轻松玩转免安装的网页翻译插件“有道网页翻译2.0”...
  5. 工作205:修改记录取消文本提示ele提示
  6. 你真的懂线程同步么?
  7. uva 10562 Undraw the Trees
  8. 重装系统后mac语言怎么改成中文?
  9. 用PS设计等高线效果的背景图片
  10. 大神u盘工具(win10PE)UEFI纯净版启动盘制作工具
  11. springboot工程中生成二维码(Java)
  12. 200多个JS小技巧
  13. element ui el-table单元格按需合并
  14. 数据库系统-数据库的完整性
  15. 【面试】北京航天无人机系统工程研究所
  16. 利用hexo和github搭建静态博客(一)
  17. ROS Couldn‘t find executable named xxx.py问题
  18. 售价80万!高合汽车,流淌法拉第FF的血液?
  19. Android模拟电话,虚拟电话来电模拟
  20. [Mac OS X] 如何在终端查看 Mac OS 版本信息

热门文章

  1. Oracle里面的用户smsdb无法登录 LOCKED(TIMED)
  2. tomcat7实战调优笔记
  3. 【从零学习openCV】opecv操作像素
  4. 与Henrik Feldt谈论Suave 1.0
  5. 数据结构-String、char
  6. 全部编程皆为Web编程
  7. IT巨擎为何迷失互联网大潮
  8. postgresql的安装与配置
  9. linux shell curl 超时与重试
  10. linux c 通过 /proc 获取 pid 进程 列表