日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

2021.10.02超详细实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。(添加好友,删除好友、屏蔽好友、查看好友列表(针对数据库的操作))

發布時間:2024/1/1 linux 37 豆豆

這次主要對加好友、刪除好友、屏蔽好友、查看好友列表功能(單純的基于數據庫操作),并且也對之前的代碼做了部分的改動,為中間涉及全局變量問題。

對之前的改動(主要):

其中對結構體進行了改動和結構體全局變量的定義

typedef struct {char name[21];char account[11];char password[17]; }Usr,pUsr; Usr USR={.name={0},.account={0},.password={0} }; //對USR成員賦值后立即求其長度 int len_nm=0; int len_ac=0; int len_ps=0;

對數據庫操作定義幾個全局變量

MYSQL mysql; MYSQL *pmysql=NULL; MYSQL_RES *res=NULL; MYSQL_ROW fetchrow=NULL;//這個變量為mysql_fetch_row設定 int row=0;//這個變量為mysq_num_rows()設定 unsigned int num_fields=0;//這個變量為mysql_num_fields設定 char slc[1024]=""; //全局變量用來存放查詢語句的字符串

對登錄函數 int Login()的改動

int Login() {char ac[11]={0};char ps[17]={0};char tmpac[11]={0};char slc[1024]="select * from usr where(account='";printf("你已進入登陸系統\n");printf("請輸入你的賬號\n");scanf("%s",ac);strncpy(tmpac,ac,strlen(ac));strncat(slc,tmpac,strlen(tmpac));printf("請輸入你的密碼\n");scanf("%s",ps);strcat(slc,"' AND password='");strncat(slc,ps,strlen(ps));strcat(slc,"')");int ret=mysql_real_query(&mysql,slc,strlen(slc));printf("%s\n",slc);res=mysql_store_result(&mysql);int row=mysql_num_rows(res);mysql_free_result(res);if(row==1){unsigned long *lenths=0;unsigned int i=0;//num_fields = mysql_num_fields(result);fetchrow=mysql_fetch_row(res);len_nm=strlen(fetchrow[0]);len_ac=strlen(fetchrow[1]);len_ps=strlen(fetchrow[2]);strncpy(USR.name,fetchrow[0],strlen(fetchrow[0])); //修改當前程序用戶信息,以便后續使用strncpy(USR.account,fetchrow[1],strlen(fetchrow[1]));//printf("USR.account:%s\n",USR.account);strncpy(USR.password,fetchrow[2],strlen(fetchrow[2]));Loggingstatus=1;printf("登陸成功\n");return 0; }else{printf("登陸失敗\n");}}

接下來就是新增功能的具體函數了

添加好友功能

int AddFriend() {char ac[11]={0};char slc1[1024]="select account from usr where account='";//printf("%s\n",slc1);printf("你已進入添加好友功能\n請輸入你要添加好友的賬號:\n");//printf("%s\n",slc1);scanf("%s",ac);strncat(slc1,ac,strlen(ac));//printf("%s\n",slc1);strcat(slc1,"'");//printf("%s\n",slc1);int ret=mysql_real_query(&mysql,slc1,strlen(slc1));//查看數據庫用戶列表有沒有這個用戶的賬號res=mysql_store_result(&mysql);row=mysql_num_rows(res);mysql_free_result(res);if(row==1)//如果查詢出來一行,說明有這個用戶,{ char slc2[1024]="select friends from ";strncat(slc2,USR.name,len_nm);strncat(slc2,USR.account,len_ac);strcat(slc2," where friends='");strncat(slc2,ac,strlen(ac));strcat(slc2,"'");//printf("%s\n",slc2);ret=mysql_real_query(&mysql,slc2,strlen(slc2));//繼續查看是否已經是自己的好友if(ret==0){res=mysql_store_result(&mysql);printf("sdasdads\n");row=mysql_num_rows(res);mysql_free_result(res);}if(row==0)//如果不是自己的好友{char slc3[1024]="insert into ";strncat(slc3,USR.name,len_nm);strncat(slc3,USR.account,len_ac);strcat(slc3,"(friends) values('");strncat(slc3,ac,strlen(ac));strcat(slc3,"')");ret=mysql_real_query(&mysql,slc3,strlen(slc3));//將該用戶添加到(單向)好友列表中res=mysql_store_result(&mysql);printf("saaa\n");//row=mysql_num_rows(res);mysql_free_result(res);printf("%s\n",slc3);if(ret!=0){perror("mysql_real_query");return -1;}if(ret==0){printf("添加好友成功\n");return 1;}}else if(row>0)//如果說自己的好友則提示已經是自己的(單向)好友,不用繼續添加{printf("已存在該好友,不可繼續添加\n");return 0;}else{printf("插入如失敗\n");return -1;}}else{printf("不存在該用戶賬號\n");return -1;}}

屏蔽好友功能

int ShieldFrd()//屏蔽好友,與添加好友類似,將需要被屏蔽的人添加到自己的屏蔽列表中 {printf("你已進入設置添加屏蔽好友功能\n,請輸入好友賬號\n");char ac[11]={0};scanf("%s",ac);char slc[1024]="select friends from ";strncat(slc,USR.name,len_nm);strncat(slc,USR.account,len_ac);strcat(slc," where friends='");strncat(slc,ac,strlen(ac));strcat(slc,"'");int ret=mysql_real_query(&mysql,slc,strlen(slc));//繼續查看是否已經是自己的好友res=mysql_store_result(&mysql);row=mysql_num_rows(res);mysql_free_result(res);if((ret==0)&&(row>0))//如果是自己的好友就可以進入屏蔽操作{char slc3[1024]="update ";strncat(slc3,USR.name,len_nm);strncat(slc3,USR.account,len_ac);strcat(slc3," set shieldfriends='");strncat(slc3,ac,strlen(ac));strcat(slc3,"' where friends='");strncat(slc3,ac,strlen(ac));strcat(slc3,"'");ret=mysql_real_query(&mysql,slc3,strlen(slc3));//將該用戶添加到屏蔽好友列表中res=mysql_store_result(&mysql);//row=mysql_num_rows(res);mysql_free_result(res);if(ret!=0){perror("mysql_real_query");return -1;}if(ret==0){printf("屏蔽好友成功\n");return 1;}}else if((ret==0)&&(row==0))//如果不是自己好友列表中不存在{printf("該賬號不是自己好友或者不存在,無法屏蔽\n");return 0;}else{printf("屏蔽失敗\n");return -1;}}

刪除好友功能

int DeleteFrd()//刪除好友, {printf("你已進入刪除好友功能\n,請輸入好友賬號\n");char ac[11]={0};scanf("%s",ac);char slc[1024]="select friends from ";strncat(slc,USR.name,len_nm);strncat(slc,USR.account,len_ac);strcat(slc," where friends='");strncat(slc,ac,strlen(ac));strcat(slc,"'");int ret=mysql_real_query(&mysql,slc,strlen(slc));//查看是否已經是自己的好友res=mysql_store_result(&mysql);row=mysql_num_rows(res);mysql_free_result(res);if((ret==0)&&(row>0))//如果是自己的好友就可以進入刪除操作{char slc3[1024]="delete from ";strncat(slc3,USR.name,len_nm);strncat(slc3,USR.account,len_ac);strcat(slc3," where friends='");strncat(slc3,ac,strlen(ac));strcat(slc3,"'");printf("%s\n",slc3);ret=mysql_real_query(&mysql,slc3,strlen(slc3));//將被刪除用戶信息從登陸用戶中全部刪除res=mysql_store_result(&mysql);mysql_free_result(res);if(ret!=0){perror("mysql_real_query");return -1;}if(ret==0){printf("刪除好友成功\n");return 1;}}else if((ret==0)&&(row==0))//如果好友列表不存在該好友{printf("該賬號不是自己好友或者不存在,無法刪除\n");return 0;}else{printf("刪除失敗\n");return -1;}}

展示好友列表

int ShowFriends() {printf("以下為好友列表和屏蔽好友列表的的賬號信息:\n");char slc[1024]="select friends,shieldfriends from ";strncat(slc,USR.name,len_nm);strncat(slc,USR.account,len_ac);mysql_real_query(&mysql,slc,strlen(slc));res=mysql_store_result(&mysql);row=mysql_num_rows(res);//num_fields=mysql_num_fields(res);while((fetchrow =mysql_fetch_row(res))){unsigned long *lengths;lengths=mysql_fetch_lengths(res);for(int i=0;i<2;i++)//只需要打印前兩列friends和shieldfriends{printf("%-20s",fetchrow[i]? fetchrow[i] : "NULL");}printf("\n");}}

總結

以上是生活随笔為你收集整理的2021.10.02超详细实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。(添加好友,删除好友、屏蔽好友、查看好友列表(针对数据库的操作))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。