资源简介
实现目标
一个在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 资料
相关资源
- Pointers on C with programs
- LInux项目实战及程序员必备
- 部署Zabbix4.0监控系统.pdf
- 也许是世界上最快的iOS12 +代码签名替
- Linux网络体系结构:Linux内核中网络协
- The Linux Command Line 2nd Edition (True PDF)
- Linux_C编程一站式学习.高清.带书签.
- The Linux Command Line 2nd Edition 第二版正式
- 兄弟连细说Linux PDF 文档
- 华为4g模块 pcie me909s-821 linux驱动
- linux版flash插件
- qt5-qtwebkit-5.6.2-1.el7.x86_64.rpm
- kali linux无线渗透(penetration test)
- Linux内核完全剖析基于0.11内核》--赵炯
- 深入理解linux内核架构英文版
- kiwi Syslog 8.3.7 破解版
- LPIC-1 study guide 2nd
- wine.deb Linux下的windows兼容工具
- 西文图书管理
- Linux英文原版图书系列].OREILLY-High_Pe
- 多核多线程技术 (高清 带书签) (
- Linux多线程编程手册.pdf
- BT协议分析以及C现实
- QT专业医疗界面仪器设计
- 树莓派基础.pdf
- LINUX-1.2.13内核网络栈实现源代码分析
- A*算法解决旅行商问题
- linux程序设计第四版高清原版
- 国嵌 Linux 安全文件传输
- zigbee基于嵌入式Linux的网关与Socket端口
评论
共有 条评论