首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux上C实现的聊天室

2012-08-29 
Linux下C实现的聊天室实现目标一个在Linux下可以使用的聊天软件,要求至少实现如下功能:1. 采用Client/Serv

Linux下C实现的聊天室

实现目标

一个在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 大侠,欢迎你来到咱们的聊天室”

附加功能:

文件传输

部分主要代码:

客户端:

client_main.h

#include "../../include/server_handle.h"/***************************************************函数名:server_view功能:处理客户端查看当前在线用户传入参数:struct message *a, clientinf *clientNode返回值:无***************************************************/int server_view(struct message *a, clientinf *clientNode){char str[MAXLEN],buf[MAXLEN];    LinkList L;    int i = 1;    L = clientlink;    L=L->next;    memset(buf,0,strlen(buf));    while(L != NULL)    {        memset(str,0,strlen(str));if(L->data.speak==1){sprintf(str,"%d. %s (在线)\n",i,L->data.name);my_strcat(buf,str);}else{sprintf(str,"%d. %s (禁言)\n",i,L->data.name);my_strcat(buf,str);}        L = L->next;        i++;    }    my_strcpy((*a).name,(*clientNode).name);    my_strcpy((*a).msg,buf);    my_send((*clientNode).decr,a,sizeof(struct message),0);}

1楼ppcc878632分钟前
markyijie

热点排行