专门针对企业开发的聊天工具,最大化方便员工沟通和交流.
1.数据安全,数据只在内网传送.
2.降低公司对互联网的依赖性,有内网就可以正常使用,支持外网接入.
3.个性化定制,公司可以推送消息到所有客户端,登录后默认所有同事都是你的好友,等等.
第一阶段
1.server 正常工作,在linux下使用c开发
2.linux 命令行客户端开发
3.linux 图形客户端开发
第二阶段
1.server依据cs.conf文件配置
3.实现文件转发
4.windows 图形客户端开发
5.客户端实现屏幕截图
第三阶段
1.android 图形客户端开发
2.ios 图形客户端开发
1.用户验证
2.好友关系判断
3.处理client的合法请求
4.同一局域网判断
5.聊天消息转发(支持对方离线,上线提醒)
6.文件转发(支持对方离线,上线提醒)
7.推送公告(支持对方离线,上线提醒)
0.解析配置文件 cs.conf
1.网络事件响应,使用 单进程 + select
2.事件处理逻辑
3.数据库操作,使用 sqlite
CentOS release 6.4
download: http://mirrors.163.com/centos/6.4/isos/
1.注册
2.登录
3.查看所有用户及在线状态(支持分组)
4.添加好友
5.删除好友
6.接收聊天消息
7.发送聊天消息
8.查看聊天记录
9.删除聊天记录
10.接收公告消息
11.发送文件
12.屏幕截图
13.群组建
linux / windows / android / ios
client的请求
注册用户 :0:troy:troy:::
销毁用户 :1:::::
登陆 :2:troy:troy:::
退出 :3:::::
查看所有用户 :4:::::
添加好友 :5:troy:_:ivy::
删除好友 :6:troy:_:ivy::
与好友聊天 :7:troy:_:ivy:nihao:
查看聊天记录 :8:troy:_:ivy::
删除聊天记录 :9:troy:_:ivy::
server的回应
10 未知请求类型
10 成功(转为登录状态)
11 表操作失败
12 用户名已存在
13 此用户不存在
1.全部用户名 及 是否在线状态 的表
create table users(id integer primary key, name text, passwd text, online text, fd integer);
insert into users(name, passwd, online, fd) values('root', 'root', 'off', -1);
insert into users(name, passwd, online, fd) values('troy', 'troy', 'off', -1);
2.表名为用户名 此用户的所有好友
create table troy(id integer primary key, name text, log_type integer);
insert into troy(name, log_type) values('ivy', -1);
insert into troy(name, log_type) values('cy', -1);
insert into troy(name, log_type) values('jdy', -1);
3.表名为用户名-好友用户名 存放聊天记录
create table troy_ivy(id integer primary key, name text, content text, datetime text);
insert into troy_ivy(name, content, datetime) values('ivy', 'hello,ivy', '20131117100404');
insert into troy_ivy(name, content, datetime) values('troy', 'hello,troy', '20131117100504');
select troy.name, users.online from troy,users where troy.name=users.name; //多表查询
select count(*) from sqlite_master where type='table' and name='user'; //表是否存在
create table users(id integer primary key, name text, passwd text, online text);
insert into users(id, name, passwd, online) values(1, 'root', '123', 'off');
select * from user where name='troy' and passwd='troy';
update employee set age=25, name='dongqiang' where name='dq';
delete from employee where id=5 or name="cj";
drop table troy_ivy; //删除表
cs communication server
cc communication client
db database
yum install sqlite.i686
root@cs# make sql /初始化数据库/
root@cs# make
root@cs# ./cs /* default port: 8888 */
root@cs# ./cc/cc
[8.16:39:21.476]:cc->src/cc_client.c->main:00044 --> connect 127.0.0.1 at PORT 8888 success.
:0:troy:troy::: /* 注册新用户 */
[8.16:39:25.779]:cc->src/cc_client.c->main:00056 --> buf=:1:troy:troy:::
[8.16:39:25.783]:cc->src/cc_client.c->main:00072 --> buf=:ivy-on:cy-off:jdy-on