资源简介

实现目标 一个在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\script\makefile

     文件       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个文件信息

评论

共有 条评论