Linux c网络编程聊天室项目
涉及内容
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网络编程聊天室项目相关推荐
- linux 下网络编程 聊天室项目
服务端使用框架:非阻塞轮询: 客户端使用框架:多线程: 使用数据库:mysql: 实现主要功能: 1.注册: 2.登录: 3.群聊: 4.私聊: 5.查看聊天记录: 6.查看在线人数: 7.修改个性签 ...
- java网络编程-聊天室
目录 V01 # 聊天室客户端(V1) # 聊天室服务端(V1) V02 # 聊天室客户端(V2) # 聊天室服务端(V2) V03 V04 # 聊天室客户端(V4) # 聊天室服务端(V4) V05 ...
- Linux网络编程--聊天室客户端程序
聊天室客户端程序 #define _GNU_SOURCE 1 #include <sys/types.h> #include <sys/socket.h> #include & ...
- 【Netty】NIO 网络编程 聊天室案例
文章目录 一. NIO 聊天室需求 二. NIO 聊天室 服务器端 代码分析 三. NIO 聊天室 客户端 代码分析 四. NIO 聊天室 服务器端 完整代码 五. NIO 聊天室 客户端 完整代码 ...
- 网络编程聊天室----服务器端
--------服务器类-------- /** * 服务器 * @author Administrator * */ public class Server { public static void ...
- Linux环境下——C语言聊天室项目
由于使用了多线程操作,客户端进入程序后请先随便注册一次用户后再进行使用. 本程序默认第一个用户即ID为1的用户为超级管理员. 由于线程阻塞,最后的踢人操作有阻塞,需要在被踢出在线链表后手动下线. 看了 ...
- Netty网络编程聊天项目
Netty网络编程聊天项目 后端编写 导入依赖 <dependencies><dependency>&l ...
- 基于Linux的网络编程——网络聊天程序
网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,作为一种典型的网络应用,编写网络聊天程序是学习基于Linux的网络编程的有效方法. 结合任务需求设计该程序,程序采用 ...
- 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)
基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...
最新文章
- iOS内实现h5原生开发
- C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
- 多图 | 搞懂volatile和synchronized的区别
- Happy new year 2009
- MLC——内存延迟及带宽测试工具
- 复制vmware overLay网络无法ping通 ping www.baidu.com可以
- 从淘宝CFO到接棒马云 张勇是如何在12年里成为阿里董事局主席的
- linux卸载时提示未安装,Ubuntu 安装卸载软件命令,及出现没有可用软件包提示时的处理办法...
- 树结构的储存与特点(相关基础知识)
- 【数学分析新讲 笔记】第一章 实数
- 日期 日历 时区 地区 格式化 API 案例 MD
- 地图上如何量方位角_利用GPS测量方位角的方法
- 天大《电子商务网站设计与管理》大作业期末考核
- win7计算机如何进入管理员权限,win7电脑怎样获得管理员权限
- zcu104 AXI DMA速度测试总结
- 8090后一年有多少存款才算正常?存款五个等级,你在第几个等级?
- tplogin 服务器未响应,为什么tplogin.cn老是域名解析错误
- 访问mega网盘 的方法
- 国产x86服务器芯片,华为、飞腾扛旗,国产服务器芯片有望突破!ARM要替代x86?...
- Origin Pro 2018 的常用操作