资源简介
实现目标
一个在Linux下可以使用的聊天软件,要求至少实现如下功能:
1. 采用Client/Server架构
2. Client A 登陆聊天服务器前,需要注册自己的ID和密码
3. 注册成功后,Client A 就可以通过自己的ID和密码登陆聊天服务器
4. 多个Client X 可以同时登陆聊天服务器之后,与其他用户进行通讯聊天
5. Client A成功登陆后可以查看当前聊天室内其他在线用户Client x
6. Client A可以选择发消息给某个特定的Client X,即”悄悄话”功能
7. Client A 可以选择发消息全部的在线用户,即”群发消息”功能
8. Client A 在退出时需要保存聊天记录
9. Server端维护一个所有登陆用户的聊天会的记录文件,以便备查
可以选择实现的附加功能:
1. Server可以内建一个特殊权限的账号admin,用于管理聊天室
2. Admin可以将某个Client X “提出聊天室”
3. Admin可以将某个Client X ”设为只能旁听,不能发言”
4. Client 端发言增加表情符号,可以设置某些自定义的特殊组合来表达感情.如输入:),则会自动发送”XXX向大家做了个笑脸”
5. Client段增加某些常用话语,可以对其中某些部分进行”姓名替换”,例如,输入/ClientA/welcome,则会自动发送”ClientA 大侠,欢迎你来到咱们的聊天室”
附加功能:
文件传输

代码片段和文件信息
#include “../../include/client_handle.h“
/***************************************************
函数名:admin_chat
功能:管理员聊天功能
传入参数:int sockfdstruct message *a
返回值:退出返回FAULT
***************************************************/
int admin_chat(int sockfdstruct message *a)
{
char str[MAXLEN];
char buf[MAXLEN];
time_t timep;
sprintf(chat_log“./chat_log/%s.txt“(*a).name);
if((fd=my_open(chat_logO_RDWR|O_CREAT|O_APPEND0777)) < 0)
{
printf(“打开聊天记录失败!“);
exit(1);
}
setbuf(stdinNULL);
my_strcpy((*a).flag“all“);
printf(“尊敬的%s你好,如需帮助请输入:.help\n“locname);
while(1)
{
memset((*a).msg0strlen((*a).msg));
memset(str0strlen(str));
usleep(100000);
printf(“TO %s:\n“(*a).flag);
setbuf(stdinNULL);
gets(str);
if(OK == help(str)) //提示信息
{
continue;
}
my_strcpy((*a).namelocname);
my_strcpy(buf(*a).flag);
cutStr(str(*a).flag15(*a).msgMAXLEN‘$‘); //调用字符切割函数
expression((*a).name(*a).msg); //表情替换函数
common_use_words((*a).msg); //常用语使用函数
if(my_strcmp((*a).flag“exit“) == 0)
{
return FAULT;
}
if(my_strcmp((*a).flag“view“) == 0)
{
my_send(sockfdasizeof((*a))0); //请求查看在线用户
my_strcpy((*a).flagbuf);
continue;
}
if(my_strcmp((*a).flag“all“) == 0)
{
my_send(sockfdasizeof(*a)0);
continue;
}
if ((my_strcmp((*a).flag“trans“) == 0) && (savefilefd <=0))
{
if ((my_strcmp((*a).msg“agree“) == 0) && (savefilefd == 0))
{
char savefilename[MAXLEN];
my_strcpy((*a).addresseefilefromuser);
printf(“请输入你想保存的文件名:\n“);
do
{
setbuf(stdinNULL);
gets(savefilename);
savefilefd = open(savefilenameO_RDWR|O_CREAT|O_EXCL0777);
if(savefilefd == -1)
{
printf(“文件已存在,你重新输入:\n“);
}
}while(savefilefd == -1);
if(savefilefd < 0)
{
printf(“接收文件失败!\n“);
savefilefd = -1;
}
else
{
my_strcpy((*a).msg“agree“);
my_send(sockfdasizeof(*a)0);
printf(“文件接收中……\n“);
}
}
else
{
memset(str0strlen(str));
cutStr((*a).msg(*a).addressee20strMAXLEN‘$‘);
if (str[0] != ‘\0‘ && (*a).addressee[0] != ‘\0‘)
{
char transfileallname[22];
sprintf(transfileallname“./%s“str);
savefilefd = open(strO_RDWR0666);
if(savefilefd < 0)
{
printf(“打开文件失败!\n“);
savefilefd = -1;
}
else
{
memset((*a).msg0strlen((*a).msg));
my_strcpy((*a).msgstr);
my_send(sockfdasizeof(*a)0);
}
}
else
{
my_strcpy((*a).msg“disagree“);
my_strcpy((*a).namelocname);
my_strcpy((*a).addresseefilefromuser);
my_send(sockfdasizeof(*a)0);
}
}
my_strcpy((*a).flagbuf);
continue;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 590 2012-08-02 15:35 Linux下C实现的聊天室\client\admin
文件 23525 2012-08-02 15:30 Linux下C实现的聊天室\client\client
文件 1638 2012-08-07 12:41 Linux下C实现的聊天室\client\include\client_handle.h
文件 927 2012-08-07 12:42 Linux下C实现的聊天室\client\include\client_main.h
文件 327 2012-07-31 15:17 Linux下C实现的聊天室\client\include\my_system_call.h
文件 115 2012-08-01 21:01 Linux下C实现的聊天室\client\makefile
文件 1499 2012-08-01 20:59 Linux下C实现的聊天室\client\sc
文件 6921 2012-08-02 00:44 Linux下C实现的聊天室\client\src\admin\admin.c
文件 6336 2012-08-02 15:30 Linux下C实现的聊天室\client\src\admin\admin.o
文件 125 2012-08-01 18:23 Linux下C实现的聊天室\client\src\admin\makefile
文件 2543 2012-08-07 12:44 Linux下C实现的聊天室\client\src\client_main\client_main.c
文件 2520 2012-08-02 00:00 Linux下C实现的聊天室\client\src\client_main\client_main.o
文件 142 2012-08-01 18:23 Linux下C实现的聊天室\client\src\client_main\makefile
文件 2081 2012-08-01 18:20 Linux下C实现的聊天室\client\src\handlefile\handlefile.c
文件 2224 2012-08-02 00:00 Linux下C实现的聊天室\client\src\handlefile\handlefile.o
文件 141 2012-08-01 18:22 Linux下C实现的聊天室\client\src\handlefile\makefile
文件 4055 2012-08-01 18:24 Linux下C实现的聊天室\client\src\handlerecvmsg\handlerecvmsg.c
文件 4108 2012-08-02 00:00 Linux下C实现的聊天室\client\src\handlerecvmsg\handlerecvmsg.o
文件 150 2012-08-01 18:24 Linux下C实现的聊天室\client\src\handlerecvmsg\makefile
文件 2792 2012-08-01 18:26 Linux下C实现的聊天室\client\src\handlestr\handlestr.c
文件 2244 2012-08-02 00:00 Linux下C实现的聊天室\client\src\handlestr\handlestr.o
文件 138 2012-08-01 18:26 Linux下C实现的聊天室\client\src\handlestr\makefile
文件 1616 2012-08-01 18:27 Linux下C实现的聊天室\client\src\interface\interface.c
文件 2212 2012-08-02 00:00 Linux下C实现的聊天室\client\src\interface\interface.o
文件 138 2012-08-01 18:27 Linux下C实现的聊天室\client\src\interface\makefile
文件 4757 2012-08-01 23:08 Linux下C实现的聊天室\client\src\log\log.c
文件 5452 2012-08-02 00:00 Linux下C实现的聊天室\client\src\log\log.o
文件 120 2012-08-01 18:28 Linux下C实现的聊天室\client\src\log\makefile
文件 74 2012-08-01 18:31 Linux下C实现的聊天室\client\src\my_str\makefile
文件 1224 2012-08-02 00:32 Linux下C实现的聊天室\client\src\my_str\my_str.c
............此处省略89个文件信息
- 上一篇:H3C构建安全优化的广域网
- 下一篇:ATT7053AU/BU 资料
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- 通信软件的具体实例──基于Socket的
- 用VC 编写的仿QQ聊天室程序源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- 成绩管理系统(数据结构)
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- FIR低通滤波器 ccs运行环境
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
评论
共有 条评论