涉及内容
C/s框架,多线程,进程,TCP/UDP双协议,c库文件,sqlite3,线程池,码量6000+

主要实现功能:注册,登录,忘记、修改、查找密码,信息群私收发,文件群私收发,常用语问候语群私收发,实时查看在线用户等等。
要实现这些功能,一定要弄清自己的思路,登录前后登录后用户的功能的实现。

我就直接上代码了(效果图在尾部):
服务器(部分代码):



客户端(全部代码)

/*************************************************************************> File Name: client.c> Author: xiaotang> Mail: 2384887092@qq.com > Created Time: 2021年08月20日 星期五 18时45分15秒************************************************************************/#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <time.h>
#include <fcntl.h>#define HOSTIP "192.168.174.129"
#define SERVAPOST 7777
#define RED "\e[0;31m"
#define GREEN "\e[0;32m"
#define BROWN "\e[0;33m"
#define BLUE "\e[0;34m"
#define BLACK "\e[0;30m"
#define DEFAULT "\e[0m"// 上移光标
#define MOVEUP(x) printf("\033[%dA", (x))// 下移光标
#define MOVEDOWN(x) printf("\033[%dB", (x))// 左移光标
#define MOVELEFT(y) printf("\033[%dD", (y))// 右移光标
#define MOVERIGHT(y) printf("\033[%dC",(y))// 定位光标
#define MOVETO(x,y) printf("\033[%d;%dH", (x), (y))// 光标复位
#define RESET_CURSOR() printf("\033[H")
// 隐藏光标
#define HIDE_CURSOR() printf("\033[?25l")// 显示光标
#define SHOW_CURSOR() printf("\033[?25h")
int ONLINE = 0;        //在线标志struct give_a_like       //点赞结构体
{char ID[20];char TOID[20];struct give_a_like * next;
};typedef struct give_a_like GIVE;
typedef GIVE * Link;Link head = NULL;
Link new_node = NULL;int masage = 0;
int Flag = 0;
int sockufd;
int Q_chat = 0;
struct sockaddr_in serveruaddr,cliuaddr;    //UDP全局变量struct chatinfor                   //用户信息结构体
{char name[20];char ID[20];char MD[20];char MDQUE[30];char MDQANS[30];char age[10];char birthday[10];char personarity[50];int add;int vip;int chat;int q_chat;
};struct loginfor            //收发命令结构体
{int flag;char ID[20];char MD[20];char TOID[20];char msg[10240];int reg;int log;char a[8];char str[20];
};char IDLOG[20];
char MDLOG[20];
char IDQUT[20];
char IDSHUT[20];struct chatinfor userinforma;
struct loginfor change;
pthread_mutex_t lock;void is_create_node_ok(Link node)
{if(NULL == node){printf("malloc error!\n");exit(-1);}
}
void create_node(Link * new_node)
{*new_node = (Link)malloc(sizeof(GIVE));is_create_node_ok(*new_node);
}
void create_link(Link * head)
{create_node(head);(*head)->next = NULL;
}void create_link_like(Link head,Link new_node)
{Link p = NULL;p = head;while(p->next != NULL){p = p->next;}p->next = new_node;new_node->next = NULL;
}                                                       //链表void time_show()                           //时间显示
{time_t rawtime;struct tm *timeinfo;time (&rawtime);timeinfo = localtime(&rawtime);printf("%d年%d月%d日%d时%d分%d秒", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1,timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);}void time_show1()                     //时间显示
{time_t rawtime;int l = 8;struct tm *timeinfo;time (&rawtime);timeinfo = localtime(&rawtime);for(int i = 0;i < masage;i++){l++;} MOVETO(l,43);printf("%d年%d月%d日%d时%d分%d秒", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1,timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);}void* read_uinfor(void* arg)                   //UDP群聊私聊接收线程
{int n;FILE* chat_fd;FILE* read_fd;FILE* qread_fd;struct loginfor user;int l = 35,m = 8,a,b;while(1){m = 8;memset(&user,0,sizeof(user));if(Q_chat != 0){Q_chat = 0;pthread_exit(NULL);}if((n = recvfrom(sockufd,&user,sizeof(user),0,NULL,NULL)) == -1){printf("\t\t\t\t\t\t服务端异常,你已经被迫下线!\n");exit(-1);}if(Q_chat != 0){Q_chat = 0;pthread_exit(NULL);}if(user.reg != 30 ){time_show1();printf("  ");}if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}if(user.reg == 10){printf("没有人在线上!\n");fclose(chat_fd);pthread_exit(NULL);}else if(user.reg == 3){masage++;    printf("[%s]没有在线!\n",user.TOID);fclose(chat_fd);}else if(user.reg == 20){for(a = 0,b = 0;;a++){if(user.msg[a] == '\0'){break;}b++;}if(strlen(user.msg) <= 90 && b <= 40){ masage++; printf(RED"群消息:[%s]对大家说:%s\n",user.ID,user.msg);printf(DEFAULT);}else{printf(RED"群消息:[%s]对大家说:",user.ID);for(int j = 0;;j++){if(user.msg[j] == '\0'){printf("\n");break;}if(j == 90 || j == 250 || j == 500 || j == 750){printf("\n");masage++;for(int k = 0;k < masage;k++){m++;}MOVETO(m,43);}printf("%c",user.msg[j]);}printf(DEFAULT);}fprintf(chat_fd,"群消息:[%s]对大家说:%s",user.ID,user.msg);fclose(chat_fd);}else if(user.reg == 15){for(a = 0,b = 0;;a++){if(user.msg[a] == '\0'){break;}b++;}if(strlen(user.msg) <= 90 && b <= 40){   masage++;     printf(BLUE"个人消息:[%s]对你说:%s\n",user.ID,user.msg);printf(DEFAULT);}else{printf(BLUE"个人消息:[%s]对你说:",user.ID);for(int j = 0;;j++){if(user.msg[j] == '\0'){printf("\n");break;}if(j == 90 || j == 250 || j == 500 || j == 750){printf("\n");masage++;for(int k = 0;k < masage;k++){m++;}MOVETO(m,43);}printf("%c",user.msg[j]);}printf(DEFAULT);}fprintf(chat_fd,"个人消息:[%s]对你说:%s\n",user.ID,user.msg);fclose(chat_fd);}l = 35;for(int i = 0;i < Flag;i++){l++;}MOVETO(l,30);printf("\n");}}
void * read_infor(void* arg)                //TCP聊天室命令接受线程
{int l = 35;FILE* chat_fd;FILE* read_fd;FILE* qread_fd;char ch[1024];struct loginfor user;struct chatinfor userinfor;int sockfd = *((int*)arg);while(1){memset(&userinfor,0,sizeof(userinfor));memset(&user,0,sizeof(user));memset(&ch,0,sizeof(ch));if(read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务端异常,你已经被迫下线!\n");exit(-1);}if(user.reg != 30 && user.reg != 80 && user.reg != 37){time_show1();printf("  ");}if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");exit(-1);}if(user.reg == 10){printf("没有人在线上!\n");fclose(chat_fd);pthread_exit(NULL);}else if(user.reg == 3){printf("[%s]没有在线!\n",user.TOID);fclose(chat_fd);}else if(user.reg == 20){masage++;printf(RED"群消息:[%s]对大家说:%s\n",user.ID,user.msg);printf(DEFAULT);fprintf(chat_fd,"群消息:[%s]对大家说:%s\n",user.ID,user.msg);fclose(chat_fd);}else if(user.reg == 40){masage++;printf(BLUE"个人消息:你收到了一个来自[%s]的文件!",user.ID);if((read_fd = fopen("file.txt","w+")) == NULL){printf("接收文件打开失败!\n");}else{fprintf(read_fd,"%s",user.msg);printf("文件名为:file.txt\n");masage++;printf("\t\t\t\t\t\t提示:下一次收到文件会自动覆盖当前文件,请及时备份有用的文件\n");printf(DEFAULT);fprintf(chat_fd,"个人消息:你收到了来自[%s]的文件\n",user.ID);}fclose(read_fd);fclose(chat_fd);}else if(user.reg == 50){masage++;printf(RED"群消息:[%s]给大家发了一个文件!",user.ID);if((read_fd = fopen("qfile.txt","w+")) == NULL){printf("接收文件打开失败!\n");}else{fprintf(read_fd,"%s",user.msg);printf("文件名为:qfile.txt\n");masage++;printf("\t\t\t\t\t\t\t提示:下一次收到文件会自动覆盖当前文件,请及时备份有用的文件\n");printf(DEFAULT);fprintf(chat_fd,"群消息:[%s]给大家发了一个文件!\n",user.ID);}           fclose(read_fd);fclose(chat_fd);}else if(user.reg == 15){masage++;printf(BLUE"个人消息:[%s]对你说:%s\n",user.ID,user.msg);printf(DEFAULT);fprintf(chat_fd,"个人消息:[%s]对你说:%s\n",user.ID,user.msg);fclose(chat_fd);}else if(user.reg == 44){masage++;printf(GREEN"系统消息:[%s]已被禁言!\n",user.ID);   printf(DEFAULT);change.reg = 1;if(strcmp(IDLOG,user.ID) == 0){masage++;printf(GREEN"\t\t\t\t\t\t系统消息:你已被禁言!\n"); printf(DEFAULT);strcpy(IDSHUT,user.ID);}fprintf(chat_fd,"系统消息:[%s]已被禁言!\n",user.ID);fclose(chat_fd);}else if(user.reg == 55){masage++;printf(GREEN"系统消息:[%s]已被踢出聊天室!\n",user.ID);printf(DEFAULT);change.reg = 5;if(strcmp(IDLOG,user.ID) == 0){masage++;strcpy(IDQUT,user.ID);printf(GREEN"\t\t\t\t\t\t\t系统消息:你已被踢出聊天室!\n");printf(DEFAULT);}fprintf(chat_fd,"系统消息:[%s]已被踢出聊天室!\n",user.ID);fclose(chat_fd);}else if(user.reg == 77){masage++;printf(GREEN"系统消息:[%s]已解除黑名单!\n",user.ID);printf(DEFAULT);change.reg = 9;if(strcmp(IDLOG,user.ID) == 0){masage++;strcpy(IDQUT,"11111111");printf(GREEN"\t\t\t\t\t\t系统消息:你已解除黑名单!\n");printf(DEFAULT);}fprintf(chat_fd,"系统消息:[%s]已解除黑名单!\n",user.ID);fclose(chat_fd);}else if(user.reg == 66){masage++;printf(GREEN"系统消息:[%s]已经解言!\n",user.ID);printf(DEFAULT);change.reg = 7;if(strcmp(user.ID,IDLOG) == 0){masage++;strcpy(IDSHUT,"00000000");printf(GREEN"\t\t\t\t\t\t系统消息:你已经解言!\n");printf(DEFAULT);}fprintf(chat_fd,"系统消息:[%s]已经解言!\n",user.ID);fclose(chat_fd);}else if(user.reg == 37){masage++;printf(RED"对方是超级vip或者vip用户,你不能对他操作!\n");printf(DEFAULT);fclose(chat_fd);}else if(user.reg == 30){Q_chat++;fclose(chat_fd);pthread_exit(NULL);}else if(user.reg == 80){int k = 5;MOVETO(k,160);printf(RED"||在线好友!\n");for(int i = 0;;i++){if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("服务器异常,你已被迫下线!\n");exit(-1);}if(userinfor.chat == 7){break;}if(strcmp(userinfor.ID,IDLOG) != 0){k++;MOVETO(k,160);printf(BLUE"|姓名%s[%s]\n",userinfor.name,userinfor.ID);                  printf(DEFAULT);}}}l = 35;for(int i = 0;i < Flag;i++){l++;}    MOVETO(l,30);printf("\n");}
}void gp_chat(int sockfd)                       //聊天室
{char ch[10];char Msg[1024];int i = 0;int from_fd;char *ptr;char argv1[20];FILE* chat_fd;pthread_t rtid;pthread_t urtid;int VIP_flag = 0;struct loginfor user;struct chatinfor userinfor;memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));strcpy(user.ID,IDLOG);
//  printf("   在线好友 !\n");user.flag = 4;write(sockfd,&user,sizeof(user));
//  printf("--|----------------------------------|\n");for(i = 0;;i++){if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("服务器异常,你已被迫下线!\n");exit(-1);}if(userinfor.chat == 7){break;}if(strcmp(userinfor.ID,IDLOG) != 0){//   printf(BLUE"--|--姓名:%s[%s]\n",userinfor.name,userinfor.ID);                   }}
//  printf(BLACK"--|----------------------------------|\n");memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));strcpy(user.ID,IDLOG);user.flag = 5;write(sockfd,&user,sizeof(user));if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("服务器异常,你已被迫下线!\n");exit(-1);}userinforma.vip = userinfor.vip;userinforma.chat = userinfor.chat;userinforma.q_chat = userinfor.q_chat;memset(&userinfor,0,sizeof(userinfor));pthread_create(&rtid,NULL,(void*)read_infor,(void*)&sockfd);pthread_create(&urtid,NULL,(void*)read_uinfor,NULL); while(1){system("clear");system("clear");MOVETO(0,0);printf(BLACK"\n\n                                                                        欢迎来到群聊聊天室!                 \n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf(RED"|----0.进入VIP特权(仅VIP用户)            |                                                                                                                    |—————————————————————|\n");printf(BLUE"|----1.私发                              |                                                                                                                    |—————————————————————|\n");printf("|----2.群发                              |                                                                                                                    |—————————————————————|\n");printf("|----3.私发文件                          |                                                                                                                    |—————————————————————|\n");printf("|----4.群发文件                          |                                                                                                                    |—————————————————————|\n");printf("|----5.退出聊天室                        |                                                                                                                    |—————————————————————|\n");printf("|----6.查看聊天记录                      |                                                                                                                    |—————————————————————|\n");printf("|----7.直接关闭客户端                    |                                                                                                                    |—————————————————————|\n");printf(RED"|----清空聊天界面(UPP)                   |                                                                                                                    |—————————————————————|\n");printf(DEFAULT);printf("|                                        |                                                                                                                    |—————————————————————|\n");printf(GREEN"| ——————————————————————————————————     |                                                                                                                    |—————————————————————|\n");printf("||            VIP升级               |    |                                                                                                                    |—————————————————————|\n");printf("||   升级VIP的唯一途径是由超级用户亲|    |                                                                                                                    |—————————————————————|\n");printf("||自升级,欲想升级需要满足两个条件: |    |                                                                                                                    |—————————————————————|\n");printf("||   1.使用本聊天室时间一年以上.    |    |                                                                                                                    |—————————————————————|\n");printf("||   2.在本群未曾被禁言或者踢出.    |    |                                                                                                                    |—————————————————————|\n");printf("||                                  |    |                                                                                                                    |—————————————————————|\n");printf("|————————————————————————————————————    |                                                                                                                    |—————————————————————|\n");printf(DEFAULT);printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf(BLUE"|                        表情库                                                                          问候语                                               |—————————————————————|\n");printf(RED"|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|     1.─=≡Σ((( つ•̀ 3 •́)つ      2.ε(○´∀`)зε(´∀`●)з                           1.新的一天,新的希望,一声温暖问候,早晨的阳光灿烂无比。早安,朋友!           |—————————————————————|\n");printf("|     3.<(`^′)>        4.o( ❛ᴗ❛ )o      5.ε=ε=(>o<)ノノ!                    2.早晨的霞光灿烂无比,空气新鲜无比,情绪舒畅无比,祝你早安!                    |—————————————————————|\n");printf("|     6.(ФωФ)            7.(*Ӧ)σ         8.(メ`[]´)/                          3.其实很多事情,只要你努力一点,你会感觉原来并不难。午安!                     |—————————————————————|\n");printf("|     9.(◦`~´◦)         10.Σ⊙▃⊙川           11.(✘_✘)                           4.闭上眼睛,把一天好的心情酝酿成一坛美酒,我的朋友,愿你今夜好梦。             |—————————————————————|\n");printf("|     12.( ̄▼ ̄)    13.(T_T)   14.(¬_¬)   15.(⌒o⌒)                          5. 送上我温馨的祝福,洗去你一天的烦恼,一句晚安送你进梦想。                    |—————————————————————|\n"); printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf(DEFAULT);user.flag = 4;write(sockfd,&user,sizeof(user));memset(&user,0,sizeof(user));memset(&ch,0,sizeof(ch));strcpy(user.ID,IDLOG);if(masage >= 16){system("clear");system("clear");printf(BLACK"\n\n                                                                        欢迎来到群聊聊天室!                 \n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf(RED"|----0.进入VIP特权(仅VIP用户)            |                                                                                                                    |—————————————————————|\n");printf(BLUE"|----1.私发                              |                                                                                                                    |—————————————————————|\n");printf("|----2.群发                              |                                                                                                                    |—————————————————————|\n");printf("|----3.私发文件                          |                                                                                                                    |—————————————————————|\n");printf("|----4.群发文件                          |                                                                                                                    |—————————————————————|\n");printf("|----5.退出聊天室                        |                                                                                                                    |—————————————————————|\n");printf("|----6.查看聊天记录                      |                                                                                                                    |—————————————————————|\n");printf("|----7.直接关闭客户端                    |                                                                                                                    |—————————————————————|\n");printf(RED"|----清空聊天界面(UPP)                   |                                                                                                                    |—————————————————————|\n");printf(DEFAULT);printf("|                                     |                                                                                                                    |—————————————————————|\n");printf(GREEN"| ——————————————————————————————————     |                                                                                                                    |—————————————————————|\n");printf("||            VIP升级               |    |                                                                                                                    |—————————————————————|\n");printf("||   升级VIP的唯一途径是由超级用户亲|    |                                                                                                                    |—————————————————————|\n");printf("||自升级,欲想升级需要满足两个条件: |    |                                                                                                                    |—————————————————————|\n");printf("||   1.使用本聊天室时间一年以上.    |    |                                                                                                                    |—————————————————————|\n");printf("||   2.在本群未曾被禁言或者踢出.    |    |                                                                                                                    |—————————————————————|\n");printf("||                                  |    |                                                                                                                    |—————————————————————|\n");printf("|————————————————————————————————————    |                                                                                                                    |—————————————————————|\n");printf(DEFAULT);printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf(BLUE"|                        表情库                                                                          问候语                                               |—————————————————————|\n");printf(RED"|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf("|     1.─=≡Σ((( つ•̀ 3 •́)つ      2.ε(○´∀`)зε(´∀`●)з                           1.新的一天,新的希望,一声温暖问候,早晨的阳光灿烂无比。早安,朋友!           |—————————————————————|\n");printf("|     3.<(`^′)>        4.o( ❛ᴗ❛ )o      5.ε=ε=(>o<)ノノ!                    2.早晨的霞光灿烂无比,空气新鲜无比,情绪舒畅无比,祝你早安!                    |—————————————————————|\n");printf("|     6.(ФωФ)            7.(*Ӧ)σ         8.(メ`[]´)/                          3.其实很多事情,只要你努力一点,你会感觉原来并不难。午安!                     |—————————————————————|\n");printf("|     9.(◦`~´◦)         10.Σ⊙▃⊙川           11.(✘_✘)                           4.闭上眼睛,把一天好的心情酝酿成一坛美酒,我的朋友,愿你今夜好梦。             |—————————————————————|\n");printf("|     12.( ̄▼ ̄)    13.(T_T)   14.(¬_¬)   15.(⌒o⌒)                          5. 送上我温馨的祝福,洗去你一天的烦恼,一句晚安送你进梦想。                    |—————————————————————|\n"); printf("|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|—————————————————————|\n");printf(DEFAULT);masage = 0;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n\n\t\t\t\t\t\t你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}else{printf("请输入你的选择:\n");scanf("%s",ch);}if(strcmp(ch,"UPP") == 0){system("clear");system("clear");masage = 0;}else if(strcmp(ch,"0") == 0){strcpy(user.ID,IDLOG);if(userinforma.vip == 1){Flag++;Flag++;Flag++;Flag++;printf(RED"尊敬的超级VIP用户!\n");printf(BROWN"你的特权(面对所有用户):1.禁言    2.踢出聊天室(加入黑名单)    3.解言    4.解除黑名单    5.不执行特权\n");printf("请输入你想执行的特权:\n");printf(DEFAULT);memset(&ch,0,sizeof(ch));memset(&user,0,sizeof(user));scanf("%s",ch);if(strcmp(ch,"1") == 0){Flag++;printf("请输入你要禁言对象的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 17;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 1){Flag++;printf("[%s]已经被你禁言了!\n",user.ID);sleep(1);}else{Flag++;printf("[%s]禁言失败!\n",user.ID);sleep(1);}}else if(strcmp(ch,"2") == 0){Flag++;VIP_flag++;printf("请输入你要踢出对象的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 18;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 5){Flag++;printf("已经踢出[%s]\n",user.ID);sleep(1);}else{Flag++;printf("踢出失败!\n");sleep(1);}}else if(strcmp(ch,"3") == 0){Flag++;VIP_flag++;printf("请输入你要解言对象的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 14;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 7){Flag++;printf("[%s]已经解言了!\n",user.ID);sleep(1);}else{Flag++;printf("[%s]解言失败!\n",user.ID);sleep(1);}}else if(strcmp(ch,"4") == 0){Flag++;VIP_flag++;printf("请输入你要解除黑名单的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 11;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 9){Flag++;printf("[%s]已经解除黑名单!\n",user.ID);sleep(1);}else{Flag++;printf("[%s]解除黑名单失败!\n",user.ID);sleep(1);}}else if(strcmp(ch,"5") == 0){VIP_flag++;Flag++;printf("返回!\n");sleep(1);}else{Flag++;printf("输入错误,返回!\n");sleep(1);}sleep(2);}else if(userinforma.vip ==  2){if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}Flag++;Flag++;Flag++;Flag++;printf(BLUE"尊敬的VIP用户!\n");printf(BROWN"你的特权(面对所有用户):1.禁言    2.踢出聊天室(加入黑名单)    3.解言    4.解除黑名单    5.不执行特权\n");          printf("请输入你想执行的特权:\n");printf(DEFAULT);memset(&ch,0,sizeof(ch));memset(&user,0,sizeof(user));scanf("%s",ch);if(strcmp(ch,"1") == 0){Flag++;VIP_flag++;printf("请输入你要禁言对象的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 12;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 1){Flag++;printf("[%s]已经被你禁言了!\n",user.ID);sleep(1);}else{Flag++;printf("[%s]禁言失败!\n",user.ID);sleep(1);}}else if(strcmp(ch,"2") == 0){Flag++;VIP_flag++;printf("请输入你要踢出对象的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 13;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 5){Flag++;printf("已经踢出[%s]!!\n",user.ID);sleep(1);}else{Flag++;printf("踢出失败!\n");sleep(1);}}else if(strcmp(ch,"3") == 0){Flag++;VIP_flag++;printf("请输入你要解言对象的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 14;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 7){Flag++;printf("[%s]已经解言了!\n",user.ID);sleep(1);}else{Flag++;printf("[%s]解言失败!\n",user.ID);sleep(1);}}else if(strcmp(ch,"4") == 0){Flag++;VIP_flag++;printf("请输入你要解除黑名单的ID:\n");Flag++;scanf("%s",user.ID);Flag++;Flag++;user.flag = 11;write(sockfd,&user,sizeof(user));sleep(1);if(change.reg == 9){Flag++;printf("[%s]已经解除黑名单!\n",user.ID);sleep(1);}else{Flag++;printf("[%s]解除黑名单失败!\n",user.ID);sleep(1);}}else if(strcmp(ch,"5") == 0){Flag++;VIP_flag++;printf("返回!\n");sleep(1);}else{Flag++;printf("\n输入错误,返回!\n");sleep(1);}sleep(2);}else{Flag++;printf("抱歉!你并不是vip用户!\n");sleep(2);}}else if(strcmp("1",ch) == 0){if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}user.flag = 3;user.reg = 1;Flag++;Flag++;printf("你想要发给谁[ID]:\n");memset(&ch,0,sizeof(ch));scanf("%s",user.TOID);while(1){if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}Flag++;Flag++;printf("你要发送表情(0)文字(1)问候语(2)或者返回(3):\n");scanf("%s",ch);if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(ch,"1") == 0){    Flag++;printf("你想[%s]说的话:\n",user.TOID);Flag++;scanf("%s",user.msg);if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}Flag++;printf("你对[%s]说了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你对[%s]说了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp(ch,"0") == 0){Flag++;printf(BLUE"--请输入你想要发送的表情序号:\n");printf(DEFAULT);memset(&ch,0,sizeof(ch));while(1){Flag++;scanf("%s",ch);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}Flag++;if(strcmp("1",ch) == 0){strcpy(user.msg,"─=≡Σ((( つ•̀ 3 •́)つ");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("2",ch) == 0){strcpy(user.msg,"ε(○´∀`)зε(´∀`●)з");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("3",ch) == 0){strcpy(user.msg,"<(`^′)>");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("4",ch) == 0){strcpy(user.msg,"o( ❛ᴗ❛ )o");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("5",ch) == 0){strcpy(user.msg,"ε=ε=(>o<)ノノ!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("6",ch) == 0){strcpy(user.msg,"(ФωФ)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("7",ch) == 0){strcpy(user.msg,"(*Ӧ)σ");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("8",ch) == 0){strcpy(user.msg,"(メ`[]´)/");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("9",ch) == 0){strcpy(user.msg,"(◦`~´◦)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("10",ch) == 0){strcpy(user.msg,"Σ⊙▃⊙川");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("11",ch) == 0){strcpy(user.msg,"(✘_✘)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("12",ch) == 0){strcpy(user.msg,"( ̄▼ ̄)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("13",ch) == 0){strcpy(user.msg,"(T_T)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("14",ch) == 0){strcpy(user.msg,"(¬_¬)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("15",ch) == 0){strcpy(user.msg,"(⌒o⌒)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了表情:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了表情:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else{Flag++;printf("输入错误!\n");sleep(1);}}break;}else if(strcmp(ch,"2") == 0){Flag++;             printf(BLUE"--请输入你想要发送的问候语序号:\n");memset(&ch,0,sizeof(ch));while(1){Flag++;scanf("%s",ch);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}Flag++;if(strcmp("1",ch) == 0){strcpy(user.msg,"新的一天,新的希望,一声温暖问候,早晨的阳光灿烂无比。早安,朋友!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("2",ch) == 0){strcpy(user.msg,"走过一些路,才知道辛苦;道一声问候,才知道这就是幸福。早安,我的朋友!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("3",ch) == 0){strcpy(user.msg,"沐浴着清晨那唯美又柔和的朝阳,开始新的一天。给一点心灵阳光,早安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("4",ch) == 0){strcpy(user.msg,"早晨的霞光灿烂无比,空气新鲜无比,情绪舒畅无比,祝你早安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("5",ch) == 0){strcpy(user.msg,"人生,要学会看见眼前,然后简单的生活,平淡的处世。早安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("6",ch) == 0){strcpy(user.msg,"他们不能接受最糟糕的你,他们也不值得拥有最好的你,中午好。");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("7",ch) == 0){strcpy(user.msg,"其实很多事情,只要你努力一点,你会感觉原来并不难。午安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("8",ch) == 0){strcpy(user.msg,"送上我温馨的祝福,洗去你一天的烦恼,一句晚安送你进梦想!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else if(strcmp("9",ch) == 0){strcpy(user.msg,"闭上眼睛,把一天好的心情酝酿成一坛美酒,我的朋友,愿你今夜好梦。");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给[%s]发了:%s\n",user.TOID,user.msg);fprintf(chat_fd,"你给[%s]发了:%s\n",user.TOID,user.msg);fclose(chat_fd);break;}else{Flag++;printf("输入错误!\n");}}break;}else if(strcmp(ch,"3") == 0){break;}else{Flag++;Flag++;printf("输入错误!\n");sleep(1);}}}else if(strcmp("2",ch) == 0){if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}user.flag = 3;user.reg = 2;while(1){if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){printf("\n你已被禁言!\n");Flag++;Flag++;sleep(1);break;}Flag++;Flag++;printf("你要发送表情(0)文字(1)问候语(2)或者返回(3):\n");memset(&ch,0,sizeof(ch));scanf("%s",ch);if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(strcmp(ch,"1") == 0){Flag++;printf("你想对大家说的话:\n");Flag++;scanf("%s",user.msg);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}Flag++;printf("你对大家说了:%s\n",user.msg);fprintf(chat_fd,"你对大家说了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp(ch,"0") == 0){Flag++;printf("--请输入你想要发送的表情序号:\n");memset(&ch,0,sizeof(ch));while(1){Flag++;scanf("%s",ch);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}Flag++;if(strcmp("1",ch) == 0){strcpy(user.msg,"─=≡Σ((( つ•̀ 3 •́)つ");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("2",ch) == 0){strcpy(user.msg,"ε(○´∀`)зε(´∀`●)з");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("3",ch) == 0){strcpy(user.msg,"<(`^′)>");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("4",ch) == 0){strcpy(user.msg,"o( ❛ᴗ❛ )o");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("5",ch) == 0){strcpy(user.msg,"ε=ε=(>o<)ノノ!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("6",ch) == 0){strcpy(user.msg,"(ФωФ)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("7",ch) == 0){strcpy(user.msg,"(*Ӧ)σ");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("8",ch) == 0){strcpy(user.msg,"(メ`[]´)/");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("9",ch) == 0){strcpy(user.msg,"(◦`~´◦)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("10",ch) == 0){strcpy(user.msg,"Σ⊙▃⊙川");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("11",ch) == 0){strcpy(user.msg,"(✘_✘)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("12",ch) == 0){strcpy(user.msg,"( ̄▼ ̄)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("13",ch) == 0){strcpy(user.msg,"(T_T)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("14",ch) == 0){strcpy(user.msg,"(¬_¬)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("15",ch) == 0){strcpy(user.msg,"(⌒o⌒)");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了表情:%s\n",user.msg);fprintf(chat_fd,"你给大家发了表情:%s\n",user.msg);fclose(chat_fd);break;}else{Flag++;printf("输入错误!\n");}}break;}else if(strcmp(ch,"2") == 0){Flag++;printf(BLUE"--请输入你想要发送的问候语序号:\n");printf(DEFAULT);memset(&ch,0,sizeof(ch));while(1){Flag++;scanf("%s",ch);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}Flag++;if(strcmp("1",ch) == 0){strcpy(user.msg,"新的一天,愿你每一天的心情快乐无比。早安,朋友!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("2",ch) == 0){strcpy(user.msg,"走过一些路,才知辛苦;道一声问候,这就是幸福。早安,我的朋友!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("3",ch) == 0){strcpy(user.msg,"沐浴着清晨那唯美又柔和的朝阳,开始新的一天。心灵灿烂。早安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("4",ch) == 0){strcpy(user.msg,"早晨的霞光灿烂无比,露珠晶莹无比,鲜花美丽无比,祝你早安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("5",ch) == 0){strcpy(user.msg,"人生,要学会看见眼前,然后简单的生活,平淡的处世。早安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("6",ch) == 0){strcpy(user.msg,"做你自己,不要为任何人改变自己,中午好。");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("7",ch) == 0){strcpy(user.msg,"其实很多事情,再努力一点,你会感觉原来并不难。午安!");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("8",ch) == 0){strcpy(user.msg,"送上我温馨的祝福,洗去你一天的烦恼,一句晚安送你进梦想。");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else if(strcmp("9",ch) == 0){strcpy(user.msg,"把一天坏的遭遇统统抛给黑夜!晚安,我的朋友。");sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));if((chat_fd = fopen("chatdata.txt","a+")) == NULL){printf("文件打开失败!\n");}printf("你给大家发了:%s\n",user.msg);fprintf(chat_fd,"你给大家发了:%s\n",user.msg);fclose(chat_fd);break;}else{Flag++;printf("输入错误!\n");}}break;}else if(strcmp(ch,"3") == 0){break;}else{Flag++;printf("输入错误!\n");sleep(1);}}}else if(strcmp("3",ch) == 0){Flag++;if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(strcmp(IDLOG,IDSHUT) == 0 || userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);}else{user.flag = 3;user.reg = 1;user.log = 3;Flag++;printf("请输入你要发给谁[ID]:\n");scanf("%s",user.TOID);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}Flag++;printf("请输入你要发送的文件路径:\n");Flag++;scanf("%s",argv1);if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}from_fd = open(argv1,O_RDONLY);if(from_fd == -1){printf("文件打开失败!\n");printf("你将给[%s]发送个空文件\n",user.TOID);}else{printf("你给[%s]发了个文件\n",user.TOID);read(from_fd,user.msg,sizeof(user.msg));write(sockfd,&user,sizeof(user));}close(from_fd);}}else if(strcmp("4",ch) == 0){Flag++;Flag++;if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(strcmp(IDLOG,IDSHUT) == 0 || userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);}else{user.flag = 3;user.reg = 2;user.log = 4;printf("请输入你要发送的文件路径:\n");Flag++;scanf("%s",argv1); if(strcmp(IDLOG,IDSHUT) == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(userinforma.chat == 0){Flag++;Flag++;printf("\n你已被禁言!\n");sleep(1);break;}if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}from_fd = open(argv1,O_RDONLY);if(from_fd == -1){printf("文件打开失败!\n");printf("你将给大家发送个空文件\n");}else{printf("你给大家发了个文件\n");Flag++;read(from_fd,user.msg,sizeof(user.msg));write(sockfd,&user,sizeof(user));}close(from_fd);}}else if(strcmp("5",ch) == 0){user.flag = 3;user.reg = 3;write(sockfd,&user,sizeof(user));break;}else if(strcmp("6",ch) == 0){if(strcmp(IDLOG,IDQUT) == 0 || userinforma.q_chat == 0){printf("\n你已被踢出群聊!\n");sleep(2);user.flag = 3;user.reg = 3;strcpy(IDQUT,"11111111");write(sockfd,&user,sizeof(user));break;}if(NULL == (chat_fd = fopen("chatdata.txt","a+"))){printf("打开聊天记录失败!\n");break;}else{printf("聊天记录!\n");printf("-----------------------------------------------------\n");while(1){fscanf(chat_fd,"%s",Msg);if(feof(chat_fd)){break;}printf("%s\n",Msg);}fclose(chat_fd);}}else if(strcmp("7",ch) == 0){exit(0);}else{Flag++;printf("输入错误!\n");}Flag++;Flag++;if(strcmp("UPP",ch) != 0 && VIP_flag == 0){            printf(RED"输入任意字符和回车继续:\n");printf(DEFAULT);char  ab[10];     scanf("%s",ab);memset(&ab,0,sizeof(ab));}VIP_flag = 0;masage = 0;   Flag = 0;}}void chat_log_on(int sockfd)             //用户界面
{FILE * LIKE_fd;char Msg_ID[20];int LIKE_flag = 0,node_flag = 0;int n = 0,k = 0,i = 0;void* rval_ptr;struct loginfor user;struct chatinfor userinfor;char ch[10],ch1[10],ch2[20];char b[20],b1[20];while(1){pthread_mutex_lock(&lock);system("clear");system("clear");memset(&ch,0,sizeof(ch));memset(&userinfor,0,sizeof(userinfor));memset(&user,0,sizeof(user));strcpy(user.ID,IDLOG);user.flag = 5;write(sockfd,&user,sizeof(user));pthread_mutex_unlock(&lock);if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}userinforma.vip = userinfor.vip;userinforma.chat = userinfor.chat;userinforma.q_chat = userinfor.q_chat;printf("\n\n\n\n\n\n\n\n");if(userinfor.vip == 1){printf(RED"\t\t\t\t\t\t|----------------------------------尊敬的超级VIP用户--------------------------------------|\n"); }if(userinfor.vip == 2){printf(BLUE"\t\t\t\t\t\t|------------------------------------尊敬的VIP用户----------------------------------------|\n"); }if(userinfor.vip == 0){printf(BLACK"\t\t\t\t\t\t|------------------------------------尊敬的普通用户---------------------------------------|\n"); }printf("\n");printf(BLACK"\t\t\t\t\t\t|—————————————————————————————————————————————————————————————————————————————————————————|\n"); printf("\t\t\t\t\t\t|-___________-             姓名:%s\n",userinfor.name); printf("\t\t\t\t\t\t||  ^     ^  |               ID:%s\n",userinfor.ID);  printf("\t\t\t\t\t\t||  0  .  0  |           点赞数:%d\n",userinfor.add); printf("\t\t\t\t\t\t||     V     |             年龄:%s\n",userinfor.age); printf("\t\t\t\t\t\t||___________|             生日:%s\n",userinfor.birthday); printf("\t\t\t\t\t\t|                      个性签名:%s\n",userinfor.personarity); printf("\t\t\t\t\t\t|-----------------------------------------------------------------------------------------|\n"); printf("\t\t\t\t\t\t|-----------------------------------------------------------------------------------------|\n"); if(userinfor.vip == 1){printf(RED"\t\t\t\t\t\t|.管理VIP(ADM)    \n");}if(userinfor.vip == 0){printf(RED"\t\t\t\t\t\t|.升级vip请联系超级用户(ID:22563227)   \n"); printf("\t\t\t\t\t\t|—————————————————————————————————————————————————————————————————————————————————————————|\n"); }if(userinfor.vip == 2){printf(RED"\t\t\t\t\t\t|.如果你的vip发生变更请联系超级用户(ID:22563227)   \n"); printf("\t\t\t\t\t\t|—————————————————————————————————————————————————————————————————————————————————————————|\n"); }printf(BLUE"\t\t\t\t\t\t|.                          现在时间:");time_show();printf("\n");printf("\t\t\t\t\t\t|.进入聊天室(CHAT)                                                                        |\n"); printf("\t\t\t\t\t\t|.显示好友(CHD)                                                                           |\n"); printf("\t\t\t\t\t\t|.查看点赞记录(LOL)           _____________________________________    广告:    >>>>>>>>  |\n"); printf("\t\t\t\t\t\t|.查看在线好友(CHE)           | 广告:                            |             >>>>>>>>  |\n"); printf("\t\t\t\t\t\t|.查看好友资料卡(LOK)         | 八个生发的方法-让你的头发重回巅峰 |             )    (  |\n"); printf("\t\t\t\t\t\t|.修改个人基本信息(UPD)       |乌黑浓密       ———————— 百度不脱发 |            ╱  ....  ╲ |\n"); printf("\t\t\t\t\t\t|.修改密码(UMD)               | 人在江湖飘,哪能不挨刀            |            | 82年   | |\n"); printf("\t\t\t\t\t\t|.刷新界面(UPP)               |   ——————飞利浦剃须刀,让你享受挨刀|            |老村长酒| |\n"); printf("\t\t\t\t\t\t|.返回(EXT)                   |___________________________________|            \\   ...  / |\n"); printf("\t\t\t\t\t\t|.关闭客户端(GOBEY)                                                             \\  ..  /  |\n"); printf("\t\t\t\t\t\t|                                                                                ) .. (   |\n"); printf("\t\t\t\t\t\t|                                                                               / ____ \\  |\n"); printf(BLACK"\t\t\t\t\t\t|—————————————————————————————————————————————————————————————————————————————————————————|\n"); printf("\t\t\t\t\t\t|—————————————————————————————————————————————————————————————————————————————————————————|\n"); printf(DEFAULT);while(1){printf("\t\t\t\t\t\t请输入你的选择:");memset(&ch,0,sizeof(ch));scanf("%s",ch);      if(strcmp("CHAT",ch) == 0){n = 1;break;}else if(strcmp("GOBEY",ch) == 0){exit(0);}else if(strcmp("UPP",ch) == 0){n = 0;break;}else if(strcmp("CHD",ch) == 0){n = 9;break;}else if(strcmp("LOL",ch) == 0){n = 8;break;}else if(strcmp("CHE",ch) == 0){n = 2;break;}else if(strcmp("UPD",ch) == 0){n = 3;break;}else if(strcmp("UMD",ch) == 0){n = 4;break;}else if(strcmp("LOK",ch) == 0){n = 6;break;}else if(strcmp("ADM",ch) == 0){n = 7;break;}else if(strcmp("EXT",ch) == 0){n = 5;return;}else{printf("\t\t\t\t\t\t你的输入有误!\n");printf("\t\t\t\t\t\t请重新输入!\n");}}switch(n){case 9:{system("clear");system("clear");memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));memset(&ch,0,sizeof(ch));printf("\n\n\t\t\t\t\t\t显示好友\n");printf(BLACK"\t\t\t\t\t\t—————————————————————————————————————————————————————————————————\n");user.flag = 20;write(sockfd,&user,sizeof(user));while(1){if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("服务器异常,你已经被迫下线\n");exit(-1);}if(userinfor.chat == 8){break;}if(strcmp(userinfor.ID,IDLOG) != 0){printf(BLUE"\t\t\t\t\t\t|-----%s[%s]\n",userinfor.name,userinfor.ID);printf("\t\t\t\t\t\t|——————————————————————————————————————————————\n");}}printf(BLACK"\t\t\t\t\t\t—————————————————————————————————————————————————————————————————\n");printf(DEFAULT);printf("\n\n\n\t\t\t\t\t\t请输入任意字符加回车返回到用户界面:");scanf("%s",ch);memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));memset(&ch,0,sizeof(ch));break;}case 8:{system("clear");system("clear");memset(&ch,0,sizeof(ch));memset(&user,0,sizeof(user));user.flag = 19;write(sockfd,&user,sizeof(user));if(read(sockfd,&user,sizeof(user)) == 0){printf("服务器异常,你已经被迫下线!\n");exit(-1);}printf("\n\n\t\t\t\t\t\t查看点赞记录!\n");printf(BLACK"\t\t\t\t\t\t—————————————————————————————————————————————————————————————————\n");if(user.reg == 18){if((LIKE_fd = fopen("LIKE.txt","w+")) == NULL){printf("\t\t\t\t\t\t打开点赞记录失败!\n");printf("\t\t\t\t\t\t即将返回!\n");sleep(2);}fprintf(LIKE_fd,"%s",user.msg);fclose(LIKE_fd);if((LIKE_fd = fopen("LIKE.txt","r")) == NULL){printf("\t\t\t\t\t\t打开点赞记录失败!\n");printf("\t\t\t\t\t\t即将返回!\n");sleep(2);}while(1){create_node(&new_node);if(LIKE_flag != 0){break;}while(1){if(node_flag == 2){create_link_like(head,new_node);node_flag = 0;break;}fscanf(LIKE_fd,"%s",Msg_ID);if(feof(LIKE_fd)){LIKE_flag++;break;}if(node_flag == 0){strcpy(new_node->ID,Msg_ID);}else{strcpy(new_node->TOID,Msg_ID);}node_flag++;}}Link p = NULL;p = head->next;while(p != NULL){if(strcmp(IDLOG,p->ID) == 0){printf(GREEN"\t\t\t\t\t\t|————你的好友[%s]偷偷的给你点了个赞!!!\n\n",p->TOID);}p = p->next;}printf(BLACK"\t\t\t\t\t\t—————————————————————————————————————————————————————————————————\n");fclose(LIKE_fd);printf("\n\n\n\t\t\t\t\t\t请输入任意字符加回车返回到用户界面:");scanf("%s",ch);}else{printf("\t\t\t\t\t\t查看点赞记录失败!\n");printf("\t\t\t\t\t\t即将返回!");sleep(2);break;}break;}case 7:{system("clear");system("clear");memset(&user,0,sizeof(user));memset(&ch,0,sizeof(ch));if(userinforma.vip == 1){while(1){system("clear");printf(RED"\t\t\t\t\t\t----------------------------------尊敬的超级VIP用户----------------------------------\n");printf(GREEN"\t\t\t\t\t\t--------------------1.取消VIP用户\n");printf("\t\t\t\t\t\t--------------------2.添加VIP用户\n");printf("\t\t\t\t\t\t--------------------3.返回用户界面\n");printf("\t\t\t\t\t\t请输入你的操作:");printf(DEFAULT);scanf("%s",ch);if(strcmp(ch,"1") == 0){user.flag = 15;printf("\t\t\t\t\t\t请输入你要取消的VIP用户ID:");scanf("%s",user.ID);write(sockfd,&user,sizeof(user));if(read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}memset(&ch,0,sizeof(ch));if(user.reg == 1){printf(BLUE"\t\t\t\t\t\t尊敬的超级VIP用户你已经操作成功![%s]已经降级\n",user.ID);printf("\t\t\t\t\t\t继续操作请输入(1)其他返回:");printf(DEFAULT);scanf("%s",ch);if(strcmp(ch,"1") != 0){break;}}}else if(strcmp(ch,"2") == 0){user.flag = 16;printf("\t\t\t\t\t\t请输入你要添加的VIP用户ID:");scanf("%s",user.ID);write(sockfd,&user,sizeof(user));if(read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}memset(&ch,0,sizeof(ch));if(user.reg == 2){printf(RED"\t\t\t\t\t\t尊敬的超级VIP用户你已经操作成功![%s]已经升级\n",user.ID);printf(DEFAULT);printf("\t\t\t\t\t\t继续操作请输入(1)其他返回:");scanf("%s",ch);if(strcmp(ch,"1") != 0){break;}}}else if(strcmp(ch,"3") == 0){break;}else{printf("\t\t\t\t\t\t输入错误");                }}}else{printf("\t\t\t\t\t\t非常抱歉!你没有权限!\n");sleep(1);}break;}case 1:{printf("\t\t\t\t\t\t你选择了进入聊天室!\n");gp_chat(sockfd);break;}case 2:{system("clear");system("clear");memset(&userinfor,0,sizeof(userinfor));printf("\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t查看在线好友 !\n");user.flag = 4;write(sockfd,&user,sizeof(user));printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————————————————————\n");for(i = 0;;i++){if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(userinfor.chat == 7){break;}if(strcmp(userinfor.ID,IDLOG) != 0){printf(BLUE"\t\t\t\t\t\t|--姓名:%s[%s]\n\n",userinfor.name,userinfor.ID);                           printf(DEFAULT);printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————————————————————\n");}}printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————————————————————\n");printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————————————————————\n");printf("\t\t\t\t\t\t退出(Y):");scanf("%s",ch2);memset(&userinfor,0,sizeof(userinfor));break;}case 6:{while(1){system("clear");system("clear");printf("\n\n\n\n\n");printf("\t\t\t\t\t\t查看好友资料卡\n");memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));user.flag = 5;printf("\t\t\t\t\t\t请输入你想查看的好友ID:");scanf("%s",user.ID);write(sockfd,&user,sizeof(user));if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(userinfor.chat != 9){if(userinfor.vip == 1){printf(RED"\t\t\t\t\t\t|---------------------尊敬的超级VIP用户----------------------------\n"); }if(userinfor.vip == 2){printf(BLUE"\t\t\t\t\t\t|-------------------------尊敬的VIP用户----------------------------\n"); }if(userinfor.vip == 0){printf(BLACK"\t\t\t\t\t\t|------------------------尊敬的普通用户----------------------------\n"); }printf("\n");printf(BLACK"\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf("\t\t\t\t\t\t|-___________-           姓名:%s\n",userinfor.name); printf("\t\t\t\t\t\t||  ^     ^  |             ID:%s\n",userinfor.ID);  printf("\t\t\t\t\t\t||  0  .  0  |         点赞数:%d\n",userinfor.add); printf("\t\t\t\t\t\t||     V     |           年龄:%s\n",userinfor.age); printf("\t\t\t\t\t\t||___________|           生日:%s\n",userinfor.birthday); printf("\t\t\t\t\t\t|                    个性签名:%s\n",userinfor.personarity); printf("\t\t\t\t\t\t|------------------------------------------------------------------\n"); printf(BLUE"\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————————————\n"); printf(DEFAULT);if(strcmp(IDLOG,user.ID) != 0){printf("\t\t\t\t\t\t要给你的好友[%s]点个赞吗?\n",userinfor.name);memset(&ch2,0,sizeof(ch2));printf("\t\t\t\t\t\t当然给(Y)不了(N):");scanf("%s",ch2);if(strcmp(ch2,"Y") == 0){strcpy(user.TOID,IDLOG);user.flag = 10;write(sockfd,&user,sizeof(user));printf("\n\n\n\t\t\t\t\t\t你已经成功给[%s]点赞啦!\n",userinfor.name);}}printf("\t\t\t\t\t\t继续查看好友资料卡请输入(Y)其他返回:");memset(&ch2,0,sizeof(ch2));scanf("%s",ch2);if(strcmp(ch2,"Y") != 0){break;}}else{printf("\t\t\t\t\t\t没有查询到这个人!请稍后重新查询\n");sleep(2);}}break;}case 3:{while(1){system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");  memset(&ch1,0,sizeof(ch1));printf("\t\t\t\t\t\t修改个人基本信息\n");user.flag = 6;strcpy(user.ID,IDLOG);while(1){printf("\n\n");memset(&userinfor,0,sizeof(userinfor));printf("\t\t\t\t\t\t请修改你的个人信息\n");printf("\t\t\t\t\t\t请注意:ID无法修改!\n");printf(BLUE"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码: \n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n"); printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t名字:");  scanf("%s",userinfor.name);system("clear");system("clear");printf("\n\n\n\n\n\n\n");  printf("\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(RED"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t密码:");scanf("%s",b);system("clear");system("clear");printf("\n\n\n\n\n\n\n"); printf("\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(BLACK"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t再次输入密码:");   scanf("%s",b1);system("clear");system("clear");printf("\n\n\n\n\n\n\n");printf("\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(RED"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t年龄:");    scanf("%s",userinfor.age);system("clear");system("clear");printf("\n\n\n\n\n\n\n");printf("\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(BLUE"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t生日:");    scanf("%s",userinfor.birthday);system("clear");system("clear");printf("\n\n");printf("\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(BLACK"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t个性签名:");   scanf("%s",userinfor.personarity); system("clear");system("clear");       printf("\n\n");           printf("\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(RED"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:%s\n",userinfor.personarity);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t密保问题:");   scanf("%s",userinfor.MDQUE);system("clear");              system("clear");printf("\n\n");printf("\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(BLUE"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:%s\n",userinfor.personarity);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:%s\n",userinfor.MDQUE);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t密保答案:");   scanf("%s",userinfor.MDQANS);system("clear");system("clear");printf("\n\n\n\n\n\n\n");             printf("\n\n");printf("\t\t\t\t\t\t请继续修改你的个人信息\n");printf(BLACK"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:%s\n",userinfor.personarity);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:%s\n",userinfor.MDQUE);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:%s\n",userinfor.MDQANS);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);if(strcmp(b,b1) != 0){printf("\t\t\t\t\t\t你输入的密码不一致,请再次输入!\n");sleep(2);}else{strcpy(userinfor.MD,b);printf("\t\t\t\t\t\t填写信息成功!\n");sleep(1);write(sockfd,&user,sizeof(user));strcpy(userinfor.ID,IDLOG);write(sockfd,&userinfor,sizeof(userinfor));break;}}if( read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(user.reg == 11){printf("\n\n\t\t\t\t\t\t恭喜你修改成功!\n");sleep(2);if(strcmp(b,MDLOG) != 0){printf(RED"\n\n\t\t\t\t\t\t尊敬的用户,发现你的密码有变更,请重新登录!!\n");printf("\t\t\t\t\t\t3秒后关闭客户端!\n");sleep(1);printf(BLUE"\t\t\t\t\t\t2秒后关闭客户端!\n");sleep(1);printf(BLACK"\t\t\t\t\t\t1秒后关闭客户端!\n");sleep(1);printf(DEFAULT);exit(0);}break;}else{printf("\t\t\t\t\t\t修改失败!\n\t\t\t\t\t\t继续修改请输入(Y)\n\t\t\t\t\t\t退出(N)\n");scanf("%s",ch1);if(strcmp(ch1,"Y") == 0){printf("\t\t\t\t\t\t请等待!");sleep(1);}else if(strcmp(ch1,"N") == 0){break;}else{printf("\t\t\t\t\t\t输入错误,返回!\n");break;}}}break;}case 4:{system("clear");system("clear");while(1){printf("\n\n\n\n\n\n\n\n\n\n\n");  printf("\t\t\t\t\t\t修改密码\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("     \t\t\t\t\t\t你的密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:\n"); printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\n\n\t\t\t\t\t\t新密码:");scanf("%s",b);system("clear");printf("\n\n\n\n\n\n\n\n\n\n\n");  printf("\t\t\t\t\t\t修改密码\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:\n"); printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\n\n\t\t\t\t\t\t再次输入你新的密码:");scanf("%s",b1);system("clear");printf("\n\n\n\n\n\n\n\n\n\n\n");  printf("\t\t\t\t\t\t修改密码\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("   \t\t\t\t\t\t  你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(" \t\t\t\t\t\t再次输入密码:%s\n",b1); printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");if(strcmp(b,b1) != 0){printf("\t\t\t\t\t\t你输入的密码不一致,请再次输入!\n");}else{user.flag = 7;strcpy(userinfor.MD,b);write(sockfd,&user,sizeof(user));strcpy(userinfor.ID,IDLOG);write(sockfd,&userinfor,sizeof(userinfor));sleep(1);if( read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(user.reg == 12){printf("\n\n\n\t\t\t\t\t\t修改密码成功!\n");printf("\t\t\t\t\t\t请重新登录!\n");printf(RED"\t\t\t\t\t\t3秒后关闭客户端!\n");sleep(1);printf(BLUE"\t\t\t\t\t\t2秒后关闭客户端!\n");sleep(1);printf(BLACK"\t\t\t\t\t\t1秒后关闭客户端!\n");sleep(1);printf(DEFAULT);exit(0);}}}break;}default:{break;}}}}void hello_world()
{printf("\n\n\n\n\t\t\t\t\t\t\n");printf(RED"\t\t\t       —       —  \n");printf("\t\t\t      | |     | | \n");printf("\t\t\t      | |     | | \n");printf("\t\t\t      | |     | | \n");printf("\t\t\t      | | ____| |     _________      _             _                                 \n");printf("\t\t\t      | _______ |    | ________|    | |           | |             ___________                      \n");printf("\t\t\t      | |     | |    | |_______     | |           | |            |  _______  |                  \n");printf("\t\t\t      | |     | |    |  _______|    | |           | |            | |       | |           \n");printf("\t\t\t      | |     | |    | |            | |           | |            | |       | |           \n");printf("\t\t\t      | |     | |    | |_______     | |________   | |_________   | |_______| |                  \n");printf("\t\t\t      | |     | |    |_________|    |__________|  |___________|  |___________|                       \n");printf("\t\t\t       —       —     \n");printf("\n");printf("\n");printf(GREEN"\t\t\t\t\t                                    —   \n");printf("\t\t\t\t\t                                   | |     _       _                   _____________                       \n");printf("\t\t\t\t\t                                   | |____| |_____| |___              |  ___   ___  |                \n");printf("\t\t\t\t\t                                   |  ____   _____   ___|             | |___| |___| |                      \n");printf("\t\t\t\t\t                                   | |    | |     | |                 |  ___   ___  |                      \n");printf("\t\t\t\t\t                                   | |    | |_____| |                 | |___| |___| |              \n");printf("\t\t\t\t\t                                   | |    |_________|                 |_____________|                     \n");printf("\t\t\t\t\t                                   | |__________________                 / /|  | \\ \\               \n");printf("\t\t\t\t\t                                   |____________________|               / / |  | |\\ \\                         \n");printf("\t\t\t\t\t                                                                       / /| |  | | \\ \\                  \n");printf("\t\t\t\t\t                                                                      /_/ | |  | |  \\_\\              \n");printf("\t\t\t\t\t                                                                          |_|  |_|                        \n");printf(DEFAULT);}void welcome()
{printf(RED"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t                         欢迎来到聊天室!\n");printf("\t\t\t\t\t\t|————————————————————————————————————————————————————————————————————————|\n");printf("\t\t\t\t\t\t|                                                                        |\n");printf("\t\t\t\t\t\t|--------------登录(LOG)                     |———————————————————————|   |\n");printf("\t\t\t\t\t\t|--------------进入用户界面(GOC)             |提示:                  |   |\n");printf("\t\t\t\t\t\t|--------------注册帐号(REG)                 |   如果你还未注册,你对|   |\n");printf("\t\t\t\t\t\t|--------------注销帐号(DOG))                |本聊天室的操作将无意义,|   |\n");printf("\t\t\t\t\t\t|--------------忘记密码(FOG)                 |请先注册才能使用。     |   |\n");printf("\t\t\t\t\t\t|--------------退出(EXIT)                    |                       |   |\n");printf("\t\t\t\t\t\t|                                            |———————————————————————|   |\n");printf("\t\t\t\t\t\t|————————————————————————————————————————————————————————————————————————|\n");printf(DEFAULT);printf("\n\n\n\n");
}void log_on(int sockfd)              //登录
{char sendline[10] = {0};struct loginfor user;while(1){system("clear");system("clear");memset(&user,0,sizeof(user));printf("\n\n\n\n\n\n\n\n\n");printf(BLUE"\t\t\t\t\t\t|——————————————————————————————————————————————————————————|\n");printf("\t\t\t\t\t\t|                           登录                           |\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|ID:                            |--------------|\n"); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|密码:                          |--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————|\n");printf(DEFAULT);MOVETO(13,65);scanf("%s",user.ID);strcpy(IDLOG,user.ID);MOVETO(16,67);   scanf("%s",user.MD);strcpy(MDLOG,user.MD);system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");printf(GREEN"\t\t\t\t\t\t|——————————————————————————————————————————————————————————|\n");printf("\t\t\t\t\t\t|                         登录中.......                    |\n");printf("\t\t\t\t\t\t|----------------------------------------------------------|\n"); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|ID:%10s                  |--------------|\n",user.ID); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|密码: **********               |--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n"); printf("\t\t\t\t\t\t|----------------------------------------------------------|\n");printf("\t\t\t\t\t\t|——————————————————————————————————————————————————————————|\n");printf(DEFAULT);user.flag = 1;user.reg = 0;write(sockfd,&user,sizeof(user));printf("\t\t\t\t\t\t服务器正在对比ID和密码!\n");printf("\t\t\t\t\t\troading................\n");sleep(1);if(read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(user.reg == 1){ONLINE = 1;sendto(sockufd,&user,sizeof(user),0,(struct sockaddr*)&serveruaddr,sizeof(serveruaddr));printf("\t\t\t\t\t\t验证成功!\n");printf("\t\t\t\t\t\t你已经成功登录!\n");printf("\n\n\t\t\t\t\t\t即将跳转到用户界面!\n");sleep(1);chat_log_on(sockfd);break;}else if(user.reg == 2){printf("\t\t\t\t\t\t该ID已经在线!不能重复登录\n");sleep(3);}else{printf("\t\t\t\t\t\t你输入的ID或者密码有误!\n");sleep(2);printf("\t\t\t\t\t\t请重新登录!\n");}}}void reg_on(int sockfd)             //注册
{struct chatinfor userinfor;struct loginfor user;memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));char ch[10];user.flag = 2;user.reg = 0;srand((unsigned)time(NULL));while(1){system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");printf(RED"\t\t\t\t\t\t                           聊天室用户注册协议\n");printf(BLUE"\t\t\t\t\t\t1.本平台提供免费注册服务,你的注册均为自愿,注册成功后你将获得平台更加完善的服务\n");printf("\t\t\t\t\t\t2.我们将会获取你的基本个人信息\n");printf("\t\t\t\t\t\t3.我们将会获取你的计算机存储权限\n");printf(DEFAULT);printf("\t\t\t\t\t\t--------------------------------------------------------------------------------\n");printf("\t\t\t\t\t\t你是否接受协议:是(Y)否(N)\n\n\n");printf("\t\t\t\t\t\t请输入你的选择:");scanf("%s",ch);getchar();if(0 == strcmp(ch,"Y")){printf("\t\t\t\t\t\t你已经接受协议!\n");sleep(2);break;}else if(0 == strcmp(ch,"N")){printf("\t\t\t\t\t\t你拒绝接受协议,即将退出!\n");sleep(1);exit(0);}else{printf("\t\t\t\t\t\t你的输入有错误!\n");sleep(1);printf("\t\t\t\t\t\t请重新输入!\n");}}memset(&ch,0,sizeof(ch));system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t正在随机生成你的注册ID.......\n");printf("\t\t\t\t\t\tloading..................\n");sleep(2);int i = 0;while(1){for(i = 0;i < 8;i++){user.a[i] = rand() % 10 + 48;if(user.a[0] == '0'){i = -1;}}printf(RED"\t\t\t\t\t\t你的ID是:%s\n",user.a);printf(DEFAULT);printf("\t\t\t\t\t\t请记住你的ID\n");sleep(2);char b[20],b1[20];while(1){printf("\n\n");memset(&userinfor,0,sizeof(userinfor));printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(RED"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码: \n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t名字:");   scanf("%s",userinfor.name);system("clear");system("clear");printf("\n\n\n\n\n\n\n");  printf("\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(BLUE"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t密码:");scanf("%s",b);system("clear");system("clear");printf("\n\n\n\n\n\n\n"); printf("\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(BLACK"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t再次输入密码:");  scanf("%s",b1);system("clear");system("clear");printf("\n\n\n\n\n\n\n");printf("\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(BLUE"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t年龄:");   scanf("%s",userinfor.age);system("clear");system("clear");printf("\n\n\n\n\n\n\n");printf("\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(BLACK"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t生日:");   scanf("%s",userinfor.birthday);system("clear");system("clear");printf("\n\n");printf("\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(RED"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t个性签名:"); scanf("%s",userinfor.personarity); system("clear");     system("clear");printf("\n\n");         printf("\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(BLACK"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:%s\n",userinfor.personarity);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t密保问题:"); scanf("%s",userinfor.MDQUE);system("clear");              system("clear");printf("\n\n");printf("\n\n\n\n\n\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(BLUE"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:%s\n",userinfor.personarity);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:%s\n",userinfor.MDQUE);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);printf("\n\n\t\t\t\t\t\t密保答案:");   scanf("%s",userinfor.MDQANS);system("clear");system("clear");printf("\n\n\n\n\n\n\n");             printf("\n\n");printf("\t\t\t\t\t\t请继续完善你的个人信息\n");printf(RED"\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的名字:%s\n",userinfor.name);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的密码:%s\n",b);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 再次输入密码:%s\n",b1);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的年龄:%s\n",userinfor.age);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     你的生日:%s\n",userinfor.birthday);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t 你的个性签名:%s\n",userinfor.personarity);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保问题:%s\n",userinfor.MDQUE);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t     密保答案:%s\n",userinfor.MDQANS);printf("\t\t\t\t\t\t|---------------------------------------|\n");printf("\t\t\t\t\t\t|---------------------------------------|\n");printf(DEFAULT);if(strcmp(b,b1) != 0){printf("\t\t\t\t\t\t你输入的密码不一致,请再次输入!\n");}else{strcpy(userinfor.MD,b);printf("\t\t\t\t\t\t填写信息成功!\n");write(sockfd,&user,sizeof(user));sleep(1);strcpy(userinfor.ID,user.a);write(sockfd,&userinfor,sizeof(userinfor));sleep(1);break;}}if(   read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(user.reg == 1){break;}else{printf("\t\t\t\t\t\t注册ID已经存在,正在重新获取!\n");system("clear");}}printf("\n\n\n\t\t\t\t\t\t注册成功!\n");printf("\t\t\t\t\t\t正在跳转登录界面!\n");printf("\t\t\t\t\t\tloading..........\n");sleep(3);log_on(sockfd);
}void delete_log(int sockfd)                 //注销
{struct chatinfor userinfor;struct loginfor user;char ch[10];memset(&user,0,sizeof(user));memset(&userinfor,0,sizeof(userinfor));user.flag = 8;while(1){memset(&ch,0,sizeof(ch));system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");printf(BLUE" \t\t\t\t\t\t                          注销帐号                    \n");printf("\t\t\t\t\t\t———————————————————————————————————————————————————————————|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|ID:                            |--------------|\n"); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|密码:                          |--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t———————————————————————————————————————————————————————————|\n");printf(DEFAULT);MOVETO(13,65);scanf("%s",userinfor.ID);MOVETO(16,67);scanf("%s",userinfor.MD);system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");printf(GREEN"\t\t\t\t\t\t                         正在注销帐号           \n");printf("\t\t\t\t\t\t———————————————————————————————————————————————————————————|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|ID:%10s                  |--------------|\n",userinfor.ID); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|ID: ***********                |--------------|\n"); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t————————————————————————————————————————————————————————————\n");printf(DEFAULT);write(sockfd,&user,sizeof(user));write(sockfd,&userinfor,sizeof(userinfor));if(read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(user.reg == 13){sleep(1);printf("\t\t\t\t\t\t注销帐号成功!\n");sleep(1);break;}else if(user.reg == 11){sleep(1);printf("\t\t\t\t\t\t帐号不存在!\n");printf("\t\t\t\t\t\t注销失败!\n\t\t\t\t\t\t请继续操作请输入(1)其他值返回:");scanf("%s",ch);if(strcmp(ch,"1") != 0){break;}}else{sleep(1);printf("\t\t\t\t\t\t注销失败!\n\t\t\t\t\t\t请继续操作请输入(1)其他值返回:");scanf("%s",ch);if(strcmp(ch,"1") != 0){break;}}}
}void find_md(int sockfd)               //找回密码
{struct chatinfor userinfor;struct loginfor user;char ch[10];while(1){memset(&user,0,sizeof(user));memset(&ch,0,sizeof(ch));memset(&userinfor,0,sizeof(userinfor));user.flag = 9;system("clear");system("clear");printf("\n\n\n\n\n\n\n\n\n");printf(BLUE" \t\t\t\t\t\t                          找回密码                    \n");printf("\t\t\t\t\t\t———————————————————————————————————————————————————————————|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|帐号:                          |--------------|\n"); printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|密保问题:                      |--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t|-----------|密保密码:                      |--------------|\n");printf("\t\t\t\t\t\t|-----------—————————————————————————————————--------------|\n");printf("\t\t\t\t\t\t———————————————————————————————————————————————————————————|\n");printf(DEFAULT);MOVETO(13,67);scanf("%s",userinfor.ID);MOVETO(16,71);scanf("%s",userinfor.MDQUE);MOVETO(19,71);scanf("%s",userinfor.MDQANS);write(sockfd,&user,sizeof(user));write(sockfd,&userinfor,sizeof(userinfor));if(read(sockfd,&userinfor,sizeof(userinfor)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}if(read(sockfd,&user,sizeof(user)) == 0){printf("\t\t\t\t\t\t服务器异常,你已被迫下线!\n");exit(-1);}printf("\n\n\n\t\t\t\t\t\t服务器正在查找.............\n");sleep(1);if(user.reg == 14){printf("\t\t\t\t\t\t找回密码成功!\n");printf(RED"\n\n\t\t\t\t\t\t你的密码是:%s\n",userinfor.MD);sleep(2);printf(BLUE"\t\t\t\t\t\t5秒后退出\n");sleep(1);printf(GREEN"\t\t\t\t\t\t4秒后退出\n");sleep(1);printf(BLACK"\t\t\t\t\t\t3秒后退出\n");sleep(1);printf(BLUE"\t\t\t\t\t\t2秒后退出\n");sleep(1);printf(BLACK"\t\t\t\t\t\t1秒后退出\n");sleep(1);printf(DEFAULT);break;}else{printf("\t\t\t\t\t\t找回密码失败!\n\t\t\t\t\t\t请继续操作(1)\n\t\t\t\t\t\t返回(2)\n");printf("\t\t\t\t\t\t请选择:");scanf("%s",ch);if(strcmp(ch,"2") == 0){break;}else if(strcmp("1",ch) == 0){printf("\t\t\t\t\t\t请稍候!!!!\n");}else{printf("\t\t\t\t\t\t输入错误!返回\n");break;}sleep(1);}}
}int main()
{int sockfd,n = 0;char mid[10] = {0};sockufd = socket(AF_INET,SOCK_DGRAM,0);if(sockufd == -1){printf("socket error!\n");exit(-1);}bzero(&serveruaddr,sizeof(serveruaddr));serveruaddr.sin_family = AF_INET;serveruaddr.sin_port = htons(SERVAPOST);serveruaddr.sin_addr.s_addr = inet_addr(HOSTIP);           //UDPstruct sockaddr_in servaddr,cliaddr;system("clear");create_link(&head);pthread_mutex_init(&lock,NULL);if(-1 == (sockfd = socket(AF_INET,SOCK_STREAM,0))){printf("socket error!\n");exit(-1);}bzero(&servaddr,sizeof(servaddr));servaddr.sin_family= AF_INET;servaddr.sin_port = htons(SERVAPOST);servaddr.sin_addr.s_addr = inet_addr(HOSTIP);             //TCPif(-1 == connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr))){printf("连接服务器失败!\n");exit(-1);}else{printf("连接服务器成功!\n");printf("loading........\n");sleep(1);system("clear");system("clear");hello_world();sleep(4);while(1){memset(&mid,0,sizeof(mid));system("clear");system("clear");welcome();printf("\t\t\t\t\t\t请输入你的选择:");                //用户命令输入scanf("%s",mid);if(0 == strcmp(mid,"LOG")){n = 1;}else if(0 == strcmp(mid,"REG")){n = 2;}else if(0 == strcmp(mid,"DOG")){n = 3;}else if(0 == strcmp(mid,"FOG")){n = 4;}else if(0 == strcmp(mid,"EXIT")){printf("\t\t\t\t\t\t退出!\n");sleep(2);exit(0);}else if(0 == strcmp(mid,"GOC")){n = 5;}else{ printf("\t\t\t\t\t\t你的输入有错误!\n");sleep(2);}switch(n){case 1:{if(ONLINE == 1){printf("\t\t\t\t\t\t你已经登录!\n");sleep(1);}else{log_on(sockfd);}break;}case 2:{if(ONLINE == 1){printf("\t\t\t\t\t\t你已经登录!不能进行这项操作\n");sleep(1);}else{reg_on(sockfd);}break;}case 3:{if(ONLINE == 1){printf("\t\t\t\t\t\t你已经登录!不能进行这项操作\n");sleep(1);}else{system("clear");delete_log(sockfd);}break;}case 4:{if(ONLINE == 1){printf("\t\t\t\t\t\t你已经登录!不能进行这项操作\n");sleep(1);}else{system("clear");find_md(sockfd);}break;}case 5:{if(ONLINE == 1){chat_log_on(sockfd);}else{printf("\t\t\t\t\t\t你还没有登录,请先登录!\n");sleep(2);}break;}default:{break;}}}}close(sockfd);pthread_mutex_destroy(&lock);
}

我们来看一下最终运行效果
服务器:
客户端:



今天的分享就到这里了,欢迎大家来和我交流,互相学习!

Linux c网络编程聊天室项目相关推荐

  1. linux 下网络编程 聊天室项目

    服务端使用框架:非阻塞轮询: 客户端使用框架:多线程: 使用数据库:mysql: 实现主要功能: 1.注册: 2.登录: 3.群聊: 4.私聊: 5.查看聊天记录: 6.查看在线人数: 7.修改个性签 ...

  2. java网络编程-聊天室

    目录 V01 # 聊天室客户端(V1) # 聊天室服务端(V1) V02 # 聊天室客户端(V2) # 聊天室服务端(V2) V03 V04 # 聊天室客户端(V4) # 聊天室服务端(V4) V05 ...

  3. Linux网络编程--聊天室客户端程序

    聊天室客户端程序 #define _GNU_SOURCE 1 #include <sys/types.h> #include <sys/socket.h> #include & ...

  4. 【Netty】NIO 网络编程 聊天室案例

    文章目录 一. NIO 聊天室需求 二. NIO 聊天室 服务器端 代码分析 三. NIO 聊天室 客户端 代码分析 四. NIO 聊天室 服务器端 完整代码 五. NIO 聊天室 客户端 完整代码 ...

  5. 网络编程聊天室----服务器端

    --------服务器类-------- /** * 服务器 * @author Administrator * */ public class Server { public static void ...

  6. Linux环境下——C语言聊天室项目

    由于使用了多线程操作,客户端进入程序后请先随便注册一次用户后再进行使用. 本程序默认第一个用户即ID为1的用户为超级管理员. 由于线程阻塞,最后的踢人操作有阻塞,需要在被踢出在线链表后手动下线. 看了 ...

  7. Netty网络编程聊天项目

                                     Netty网络编程聊天项目 后端编写 导入依赖    <dependencies><dependency>&l ...

  8. 基于Linux的网络编程——网络聊天程序

    网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,作为一种典型的网络应用,编写网络聊天程序是学习基于Linux的网络编程的有效方法. 结合任务需求设计该程序,程序采用 ...

  9. 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)

    基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...

最新文章

  1. iOS内实现h5原生开发
  2. C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
  3. 多图 | 搞懂volatile和synchronized的区别
  4. Happy new year 2009
  5. MLC——内存延迟及带宽测试工具
  6. 复制vmware overLay网络无法ping通 ping www.baidu.com可以
  7. 从淘宝CFO到接棒马云 张勇是如何在12年里成为阿里董事局主席的
  8. linux卸载时提示未安装,Ubuntu 安装卸载软件命令,及出现没有可用软件包提示时的处理办法...
  9. 树结构的储存与特点(相关基础知识)
  10. 【数学分析新讲 笔记】第一章 实数
  11. 日期 日历 时区 地区 格式化 API 案例 MD
  12. 地图上如何量方位角_利用GPS测量方位角的方法
  13. 天大《电子商务网站设计与管理》大作业期末考核
  14. win7计算机如何进入管理员权限,win7电脑怎样获得管理员权限
  15. zcu104 AXI DMA速度测试总结
  16. 8090后一年有多少存款才算正常?存款五个等级,你在第几个等级?
  17. tplogin 服务器未响应,为什么tplogin.cn老是域名解析错误
  18. 访问mega网盘 的方法
  19. 国产x86服务器芯片,华为、飞腾扛旗,国产服务器芯片有望突破!ARM要替代x86?...
  20. Origin Pro 2018 的常用操作

热门文章

  1. 珠宝销售系统毕业设计
  2. 基于ESP32的磁流体音箱
  3. 网安信科技—与黑客上演速度与激情
  4. Java8中的日期与时间处理
  5. [Python][CV2]cv2.imwrite写jpg图像会引入噪声
  6. DataCamp中Introduction to Python之Python Basics练习
  7. 资源 :数据科学类国家精品在线开放课程
  8. CD4046应用之倍频
  9. [完整]首届盘古石杯电子数据取证大赛晋级赛Writeup
  10. hbase表结构以及操作