当前位置: 首页 > news >正文

html5在网站建设中的湛江做网站软件

html5在网站建设中的,湛江做网站软件,建设企业网站企业网银,江苏省城乡建筑信息网文章目录一、思维导图二、词典1、服务器2、客户端3、现象三、牛客网刷题一、思维导图 二、词典 1、服务器 #include myhead.h#define SER_PORT 8888 //服务器端口号 #define SER_IP 192.168.116.128 //服务器IP地址 //账户密码结构 typedef s… 文章目录一、思维导图二、词典1、服务器2、客户端3、现象三、牛客网刷题一、思维导图 二、词典 1、服务器 #include myhead.h#define SER_PORT 8888 //服务器端口号 #define SER_IP 192.168.116.128 //服务器IP地址 //账户密码结构 typedef struct acc_pass {int num;char account[20];int password; } acc_pass_t;//搜索查询结构 typedef struct search_query {int num;char word[50];char account[20]; } search_query_t;//搜索历史结构 typedef struct search_history {char client_ip[16];int client_port;char account[20];char search_word[50];char search_result[256];char search_time[20]; } search_history_t;/**************将文件中的词插入到表中********************/ int insert_word(sqlite3 *ppDb,char *buf1,char *buf2) {char sql[256];snprintf(sql,sizeof(sql),insert into WORD_TRANSLATE values(\%s\,\%s\);,buf1,buf2);char *errmsgNULL;if (sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(%d插入失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************清空单词的数据表********************/ int empty_word(sqlite3 *ppDb) {char sql[128]delete from WORD_TRANSLATE;;char *errmsgNULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(%d清空失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************记录搜索历史********************/ int record_search_history(sqlite3 *ppDb,const char *client_ip,int client_port,const char *account,const char *word,const char *result) {//获取当前时间time_t now time(NULL);struct tm *t localtime(now);char timestamp[20];snprintf(timestamp,sizeof(timestamp),%04d-%02d-%02d %02d:%02d:%02d,t-tm_year 1900,t-tm_mon 1,t-tm_mday,t-tm_hour,t-tm_min,t-tm_sec);char sql[512];snprintf(sql,sizeof(sql), insert into SEARCH_HISTORY values(\%s\,%d,\%s\,\%s\,\%s\,\%s\);,client_ip,client_port,account,word,result,timestamp);char *errmsgNULL;if (sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(%d插入搜索历史失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************查询单词********************/ int query_word(sqlite3 *ppDb,const char *word,char *result,int result_size) {char sql[256];snprintf(sql,sizeof(sql),select translate from WORD_TRANSLATE where word\%s\;,word);char *errmsgNULL;int found0;int callback(void *data,int argc,char **argv,char **azColName) {if(argc0argv[0]) {strncpy((char*)data,argv[0],result_size-1);found1;}return 0;}if(sqlite3_exec(ppDb,sql,callback,result,errmsg)!SQLITE_OK){printf(%d查询失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}if(!found) {strncpy(result,未找到该单词,result_size-1);}result[result_size-1]\0;return 0; }/***************查询搜索历史********************/ int query_search_history(sqlite3 *ppDb,const char *account,char *result,int result_size) {char sql[256];snprintf(sql,sizeof(sql),select search_time,search_word,search_result from SEARCH_HISTORY where account\%s\ order by search_time desc;, account);char *errmsgNULL;result[0]\0;int count0;int callback(void *data,int argc,char **argv,char **azColName) {char *res(char *)data;char line[512];snprintf(line,sizeof(line),时间: %s\n单词: %s\n结果: %s\n\n,argv[0],argv[1],argv[2]);if(strlen(res)strlen(line)(size_t)(result_size-1)) {strcat(res,line);count;}return 0;}if(sqlite3_exec(ppDb,sql,callback,result,errmsg)!SQLITE_OK){printf(%d查询历史记录失败:%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}if(count0) {strncpy(result,无搜索历史记录,result_size-1);result[result_size-1]\0;}return 0; }/**************将账户密码插入到表中********************/ int insert_account(sqlite3 *ppDb,const char *account,int password) {//检查账号是否已存在char check_sql[256];snprintf(check_sql,sizeof(check_sql),select * from ACCOUNT_PASSWORD where account\%s\;,account);char *errmsgNULL;int exists0;int check_callback(void *data,int argc,char **argv,char **azColName) {*(int*)data1;return 0;}if(sqlite3_exec(ppDb,check_sql,check_callback,exists,errmsg)!SQLITE_OK){printf(%d查询账号失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}if(exists) {printf(账号已存在\n);return -1;}//插入新账号char sql[256] ;snprintf(sql, sizeof(sql), insert into ACCOUNT_PASSWORD values(\%s\,%d,0);, account, password);if (sqlite3_exec(ppDb, sql, NULL, NULL, errmsg) ! SQLITE_OK){printf(%d插入账号失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************清空账号密码的数据表********************/ int empty_account(sqlite3 *ppDb) {char sql[128]delete from ACCOUNT_PASSWORD;;char *errmsgNULL;if (sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(%d清空账号表失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************登录账户********************/ int enter_account(sqlite3 *ppDb,const char *account,int password) {char sql[256];snprintf(sql, sizeof(sql), select * from ACCOUNT_PASSWORD where account\%s\ and password%d and flag0;,account, password);char *errmsgNULL;int exists0;int callback(void *data,int argc,char **argv,char **azColName) {*(int*)data1;return 0;}if (sqlite3_exec(ppDb,sql,callback,exists,errmsg)!SQLITE_OK){printf(%d查询账号失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}if (!exists) {return -1; //账号密码错误或已登录}//更新登录状态snprintf(sql,sizeof(sql),update ACCOUNT_PASSWORD set flag1 where account\%s\ and password%d;,account,password);if (sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(%d更新登录状态失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************退出账户********************/ int break_account(sqlite3 *ppDb,const char *account,int password) {char sql[256];snprintf(sql,sizeof(sql),update ACCOUNT_PASSWORD set flag0 where account\%s\ and password%d;,account, password);char *errmsgNULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(%d更新退出状态失败%s\n,__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0; }/***************处理客户请求********************/ void handle_client(int new_fd,struct sockaddr_in cin,sqlite3 *ppDb) {char client_ip[16] {0};inet_ntop(AF_INET,cin.sin_addr.s_addr,client_ip,sizeof(client_ip));int client_portntohs(cin.sin_port);printf([%s:%d]连接成功,new_fd%d\n,client_ip,client_port,new_fd);acc_pass_t p;search_query_t query;int flag;char result[4096]{0};char current_account[20]{0}; //记录当前登录账号while(1){memset(p,0,sizeof(acc_pass_t));int resrecv(new_fd,p,sizeof(acc_pass_t),0);if(res0){if(res0){printf(客户端[%s:%d]已下线\n,client_ip,client_port);//如果已登录更新状态if(strlen(current_account)0){break_account(ppDb,current_account,p.password);}}else{perror(recv error);}break;}printf(收到客户端[%s:%d]请求: num%d\n,client_ip,client_port,p.num);switch(p.num){case 1: //注册账号printf(注册账号: %s, %d\n,p.account,p.password);flaginsert_account(ppDb,p.account,p.password);break;case 2: //登录账户printf(登录账户:%s,%d\n,p.account,p.password);flagenter_account(ppDb,p.account,p.password);if(flag0){strcpy(current_account,p.account);}send(new_fd,flag,sizeof(flag),0);break;case 3: //退出账户printf(退出账户:%s,%d\n,p.account,p.password);flagbreak_account(ppDb,p.account,p.password);if(flag0){memset(current_account,0,sizeof(current_account));}send(new_fd,flag,sizeof(flag),0);break;case 4: //查询单词printf(查询单词请求\n);memset(query,0,sizeof(query));if(recv(new_fd,query,sizeof(query),0)0){perror(recv query error);flag-1;break;}printf(用户[%s]查询单词:%s\n,query.account,query.word);memset(result,0,sizeof(result));if (query_word(ppDb,query.word,result,sizeof(result))0){send(new_fd,result,strlen(result)1,0);//记录搜索历史record_search_history(ppDb,client_ip,client_port, query.account, query.word, result);}else{send(new_fd,查询失败,strlen(查询失败)1,0);}break;case 5: //查询历史记录printf(查询历史记录请求,用户:%s\n,p.account);memset(result,0,sizeof(result));if(query_search_history(ppDb,p.account,result,sizeof(result))0){send(new_fd,result,strlen(result)1,0);}else{send(new_fd,查询历史记录失败,strlen(查询历史记录失败)1,0);}break;default:printf(未知请求:%d\n,p.num);break;}}close(new_fd);printf([%s:%d]连接关闭,new_fd%d\n,client_ip,client_port,new_fd); }//处理僵尸进程 void handle_sigchild(int sig) {while (waitpid(-1,NULL,WNOHANG)0); }/***************主函数********************/ int main(int argc, const char *argv[]) {//设置信号处理回收僵尸进程signal(SIGCHLD,handle_sigchild);//打开词典文件int fd open(./dict.txt,O_RDONLY);if(fd-1){ERR_MSG(open dict.txt error);}//打开或创建数据库sqlite3 *ppDbNULL;if (sqlite3_open(./dict.db,ppDb)!SQLITE_OK){printf(sqlite3_open error: %s\n,sqlite3_errmsg(ppDb));close(fd);return -1;}//创建单词表char *sqlcreate table if not exists WORD_TRANSLATE(word char primary key, translate char);;char *errmsgNULL;if (sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(创建单词表失败%s\n,errmsg);sqlite3_free(errmsg);sqlite3_close(ppDb);close(fd);return -1;}empty_word(ppDb); //清空单词表//创建账户表sql create table if not exists ACCOUNT_PASSWORD(account char primary key,password int,flag int);; //flag: 0-未登录, 1-已登录if (sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(创建账户表失败%s\n,errmsg);sqlite3_free(errmsg);sqlite3_close(ppDb);close(fd);return -1;}empty_account(ppDb); //清空账户表//创建搜索历史表sql create table if not exists SEARCH_HISTORY(client_ip char,client_port int,account char,search_word char,search_result char,search_time char);;if(sqlite3_exec(ppDb,sql,NULL,NULL,errmsg)!SQLITE_OK){printf(创建历史表失败:%s\n,errmsg);sqlite3_free(errmsg);//不退出继续执行}printf(初始化词典中\n);//从文件加载单词到数据库char buf1[128]{0}; //单词char buf2[512]{0}; //翻译char buf[1]{0};ssize_t nread;off_t file_sizelseek(fd,0,SEEK_END);lseek(fd,0,SEEK_SET);while (lseek(fd,0,SEEK_CUR)file_size){memset(buf1,0,sizeof(buf1));memset(buf2,0,sizeof(buf2));//读取单词到第一个空格int i0;while (isizeof(buf1)-1){nreadread(fd,buf,1);if(nread0)break;if(buf[0] ||buf[0]\t||buf[0]\n){break;}buf1[i]buf[0];}//跳过空格while(1){nreadread(fd,buf,1);if(nread0)break;if(buf[0]! buf[0]! \t){lseek(fd,-1,SEEK_CUR); //回退一个字符break;}}//读取翻译到换行符i0;while(isizeof(buf2)-1){nreadread(fd,buf,1);if(nread0)break;if(buf[0]\n)break;buf2[i]buf[0];}if(strlen(buf1)0){insert_word(ppDb,buf1,buf2);//printf(加载单词: %s - %s\n, buf1, buf2);}}close(fd);printf(词典加载完成\n);//创建服务器套接字int sfdsocket(AF_INET,SOCK_STREAM,0);if(-1sfd){ERR_MSG(socket error);}printf(socket创建成功,sfd %d\n,sfd);//设置端口复用int reuse1;if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,reuse,sizeof(reuse))-1){ERR_MSG(setsockopt error);}//绑定地址struct sockaddr_in sin;sin.sin_familyAF_INET;sin.sin_porthtons(SER_PORT);sin.sin_addr.s_addrinet_addr(SER_IP);if(bind(sfd,(struct sockaddr*)sin,sizeof(sin))-1){ERR_MSG(bind error);}printf(bind成功\n);//监听if(listen(sfd, 128)-1){ERR_MSG(listen error);}printf(listen成功等待客户端连接...\n);struct sockaddr_in cin;socklen_t addrlensizeof(cin);while(1){int new_fd accept(sfd,(struct sockaddr*)cin,addrlen);if(-1new_fd){perror(accept error);continue;}//创建子进程处理客户端pid_t pidfork();if(pid0){close(sfd); //子进程关闭监听套接字handle_client(new_fd,cin,ppDb);sqlite3_close(ppDb); //子进程关闭数据库exit(EXIT_SUCCESS);}else if(pid0){close(new_fd); //父进程关闭通信套接字}else{close(new_fd);perror(fork error);}}//关闭资源理论上不会执行到这里sqlite3_close(ppDb);close(sfd);return 0; } 2、客户端 #include myhead.h #define SER_PORT 8888 //服务器端口号 #define SER_IP 192.168.116.128 //服务器IP地址 //账户密码结构 typedef struct acc_pass {int num;char account[20];int password; } acc_pass_t;//单词查询结构与服务器保持一致 typedef struct search_query {int num;char word[50];char account[20]; } search_query_t;//注册账户 int do_register(int num,acc_pass_t *p,int cfd) {printf(请输入账号:);scanf(%s,p-account);printf(请输入密码:);scanf(%d,p-password);p-numnum;//发送注册信息if(send(cfd,p,sizeof(acc_pass_t),0)-1){perror(send register error);return -1;}printf(注册信息发送成功\n);return 0; }//登录账户 int do_login(int num,acc_pass_t *p,int cfd) {printf(请输入账号:);scanf(%s,p-account);printf(请输入密码:);scanf(%d,p-password);p-numnum;//发送登录信息if(send(cfd,p,sizeof(acc_pass_t),0)-1){perror(send login error);return -1;}//接收登录结果int response;if(recv(cfd,response,sizeof(response),0)-1){perror(recv response error);return -1;}if (response0){printf(登录成功\n);return 0;}else{printf(登录失败\n);return -1;} }//退出账户 int do_logout(int num,acc_pass_t *p,int cfd) {p-numnum;if(send(cfd,p,sizeof(acc_pass_t), 0)-1){perror(send logout error);return -1;}int response;if (recv(cfd,response,sizeof(response),0)-1){perror(recv logout response error);return -1;}return response; }//查询搜索历史 int do_search_history(int cfd,const char *account) {acc_pass_t p;memset(p,0,sizeof(acc_pass_t));p.num5;strcpy(p.account,account); //携带账号信息if(send(cfd,p,sizeof(acc_pass_t),0)-1){perror(send history request error);return -1;}//接收历史记录char history[4096]{0};int recv_lenrecv(cfd,history,sizeof(history)-1,0);if(recv_len-1){perror(recv history error);return -1;}printf(搜索历史记录:\n%s\n,history);return 0; }//查询单词 int do_search_word(int cfd,const char *account) {//发送查询类型标识acc_pass_t p;memset(p,0,sizeof(acc_pass_t));p.num4;strcpy(p.account,account);if (send(cfd,p,sizeof(acc_pass_t),0)-1){perror(send search type error);return -1;}//准备查询信息search_query_t query;memset(query,0,sizeof(search_query_t));query.num4;strcpy(query.account, account);printf(请输入要查询的单词:);scanf(%s,query.word);query.word[strcspn(query.word,\n)]\0;//发送查询请求if (send(cfd,query,sizeof(query),0)-1){perror(send word query error);return -1;}//接收查询结果char result[256]{0};int recv_lenrecv(cfd,result,sizeof(result)-1,0);if(recv_len-1){perror(recv word result error);return -1;}printf(查询结果: %s\n,result);return 0; }int main(int argc, const char *argv[]) {//创建通信套接字int cfdsocket(AF_INET, SOCK_STREAM, 0);if(-1cfd){perror(socket error);return -1;}printf(socket创建成功,cfd %d\n,cfd);//连接服务器struct sockaddr_in sin;sin.sin_familyAF_INET;sin.sin_porthtons(SER_PORT);sin.sin_addr.s_addrinet_addr(SER_IP);if (connect(cfd,(struct sockaddr*)sin,sizeof(sin))-1){perror(connect error);close(cfd);return -1;}printf(连接服务器成功\n);acc_pass_t *p(acc_pass_t*)malloc(sizeof(acc_pass_t));if(pNULL){perror(malloc error);close(cfd);return -1;}memset(p,0,sizeof(acc_pass_t));int num;int logged_in0;//记录当前状态char current_account[20]{0}; //记录当前登录账号//数据收发循环while(1){if(!logged_in){printf( 请选择功能 \n);printf(1、注册账户\n);printf(2、登录账号\n);printf(3、退出程序\n);printf(\n);printf(选择功能);scanf(%d,num);switch(num){case 1:do_register(num,p,cfd);break;case 2:if(do_login(num,p,cfd) 0){logged_in1;strcpy(current_account,p-account); //保存当前登录账号}break;case 3:printf(程序即将退出\n);free(p);close(cfd);return 0;default:printf(无效的选择请重新输入\n);break;}}else{printf( 请选择功能 \n);printf(1、查找单词\n);printf(2、查找历史记录\n);printf(3、退出登录\n);printf(\n);printf(选择功能);scanf(%d,num);switch (num){case 1:do_search_word(cfd,current_account);break;case 2:do_search_history(cfd,current_account);break;case 3:do_logout(num,p,cfd);logged_in0;memset(current_account,0,sizeof(current_account));printf(已退出登录\n);break;default:printf(无效的选择请重新输入\n);break;}}}//关闭资源free(p);close(cfd);return 0; } 3、现象 三、牛客网刷题
http://www.zqtcl.cn/news/902673/

相关文章:

  • 网站开发费用属于什么科目网站建设考试多选题
  • c asp做网站wordpress4.5.2文章采集
  • 百度网站建设电话建立网站站建设可以吗
  • 网站后台代码在哪修改网站如何做下一页
  • 网站开发职业要求百度推广代理商与总公司的区别
  • 西安网站建设中心网页 网 址网站区别
  • 技术支持东莞网站建设机械seo岗位是什么意思
  • 做商城网站需要备案什么域名硬件开发工具有哪些
  • 网络网站制作技巧wordpress全文
  • 韩国原生ip站群服务器左右悬停代码网站
  • 专门做广东11选5的网站网站 备案 营业执照
  • 免费扑克网站wordpress弹出服务协议窗口
  • 网站的反爬一般怎样做网站右键屏蔽
  • 茂名做网站dyiee青岛宣传片制作公司
  • 凡科网可以自己做网站吗编程常用网站
  • 做网站练手项目公司营业执照可以做几个网站
  • 聚通达网站建设网站并发要求
  • 网站建设预算申请如何写服装店网页设计素材
  • 做网站设计的公司柳州芜湖又出现一例
  • 重庆网站网站建设东莞市网站建设公司哪家好
  • php做网站如何架构wordpress 排版
  • wordpress免费网站模板下载地址在北京注册公司需要多少钱
  • 做的网站打不开高端网站名字
  • 个人网站建设报告西安网站开发高端网站开发
  • “网站建设:上海珍岛”网站备案信息查询系统
  • 北京哪个公司做网站专业建站培训
  • 郑州知名网站推广网站管理设置
  • 建设工程网站资质人员查询常州模板网站建设价格
  • 自己建网站做app手机网站列表页源码
  • 企业网站模板seo网站建设关键词优化