资源简介
在linux下的基于TCP/IP,采用socket通信的聊天室,实现进入聊天室,进行多人群聊,指定人进行私聊,群主管理员功能,颗进行禁言,提出群聊等操作。个人账号可修改昵称或者修改密码,还可进行找回密码等功能

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct Data
{
int work; //cli工作指令
int flag; //回执flag
char mess[1024]; //消息
char account[30]; //用户登入账号
char name[30]; //用户昵称
char pass[30]; //用户密码
char online[30]; //在线情况
char time[30];
int root; //root权限?
int jinyan; //禁言flag?
char toName[30];
char fromName[30];
char fileName[30];
char question[256]; //密保问题
char answer[256]; //密保答案
}MsgData;
typedef struct LocalChat
{
char mess[1024];
char fromName[30];
char toName[30];
char time[30];
int flag;//判断私聊还是群聊 1私聊,0群聊
}chatFile;
char IP[15];//服务器的IP
short PORT = 7777;//服务器服务端口
int clientSocket;
char myName[30];
char myAccount[30];
int isChatOneOnline;
int slientFlag;//为了禁言后不保存本地聊天记录
int rootFlag;//判断管理员flag
int bossFlag;
int noOneSlientFlag;
void registerNewAccount();//注册
void saveGroupChat(MsgData *msgint flag);
void chatAll();
char *getTime();
void firstMenu();
void chatManual();//帮助手册
void chatOne();
void lookOnlinePeople();
void isRoot();
void makeSlient();
void releaseSlient();
void thirdMenu();
void setRoot();
void removeRoot();
void getOut();
void rootActions();
void sendFile();
void viewLocalChat();
void linkOffline();
void secondMenuAndAction();
void anyKeyToNext();
int enterAccount();
char *getTime();
void* recvThread(void* _clientSocket);
void updateName();
void updatePassword();
void retrieveAccountPassword();
void actions();
void lookSlientPeople();
void saveFile(msgdata *msg);
void* recvThread(void* _clientSocket) //一直在这里接收
{
clientSocket = (int)_clientSocket;
MsgData msg;
while(1)
{
if(recv(clientSocket&msgsizeof(MsgData)0) <= 0)//每次都判断
{
printf(“服务器断开链接\n“);
exit(-1);
}
switch(msg.work)
{
case 3:
printf(“(群聊)%s : %s\n“msg.namemsg.mess);
saveGroupChat(&msg1);
break;
case 4:
isChatOneOnline = 1;//没找到私聊的人或已下下线
break;
case 5:
//if(isChatOneOnline != 1)
//{
printf(“(私聊)%s偷偷对你说:%s\n“msg.fromNamemsg.mess);
saveGroupChat(&msg0);
//}
break;
case 6://在线人员
printf(“%s\n“msg.name);
break;
case 7:
if(msg.flag == 1)
{
rootFlag = 1;
printf(“您是root用户请稍后\n“);
}
else
{
printf(“您不是root用户\n正在返回群聊........\n“);
}
break;
case 8:
slientFlag = 1;
printf(“您已经被禁言了\n“);
break;
case 9:
printf(“操作失败(对方可能不存在)请重新选择操作\n“);
break;
case 10:
printf(“禁言 %s 成功\n“msg.toName);
break;
case 11:
printf(“解除 %s 的禁言成功\n“msg.toName);
break;
case 12:
printf(“文件发送成功\n正在返回群聊........\n“);
break;
case 13:
printf(“
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 32887 2018-08-08 16:20 server.c
文件 22930 2018-08-01 17:14 client.c
- 上一篇:数据库课程设计报告仓库管理系统
- 下一篇:算术表达式的语法分析及语义分析程序设计
相关资源
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- 成绩管理系统(数据结构)
- FIR低通滤波器 ccs运行环境
- C malloc函数用法
- 嵌入式局域网聊天系统客户端
- 算法竞赛入门经典 第2版刘汝佳+高清
- 基于单片机的GPS定位及显示系统设计
- 链表实现通讯录管理系统
- PowerShell-6.2.1-win-x86.zip
- pl/0编译器 语法分析
- 源程序阅读与调试课程设计报告--学生
- 谁说程序员不浪漫?!基于easyX图形库
- 编译原理课设c编译器
- MCP3421 STM32 Driver
- ADS1100 STM32 Driver
- 单片机89c52与MLX90614红外的测温程序
- stm32f103AES加密 cbc模式
- 单片机 点阵 字模提取软件
- C高级编程讲义-传智播客
- NOIP必学内容之前缀和与差分颜鸿宇
- Skyline高效检索算法实现.zip
- STM8S103系列IO模拟串口通信实现真正串
- stm32f103c8t6移植uC/OS-III基于HAL库的工程
- 温度、一氧化碳、二氧化碳、PM2.5以及
- 王道论坛计算机考研机试指南
- 有限元中网格剖分算法
- PLC开源资料
评论
共有 条评论