我用qq最恨他过滤我的信息了,但没办法,信息传递要经过qq服务器
所以我设计了个新的原理,不经过主服务器传递聊天信息
服务端
这个聊天当然有服务器端的,不过这个是为了方便用户储存一些个人数据,方便在网吧的用户,该服务器端有注册用户的数据,象密码什么的,这个就是起个身份识别作用,我不说了
服务器端有个数据库,这个很重要,用来存储登陆用户的标志号码(这个是分配的,不是注册的),以及第一个登陆用户(也就是开服务的)的ip,还有加入聊天的用户的ip,和该聊天室的名称
当聊天用户发送下线请求时,服务器的数据库里把该用户数据删除,很简单吧,呵呵
客户端
客户端聊天有两种模式,
一种是直接开服务然后把自己的ip告诉别人,叫别人来连接自己参加聊天,这个最隐秘,基本上别人不知道就无法连到你机子上,甚至你可以改聊天端口,这样更安全,增加别人扫描的难度,真正是没开秘密会议的好地方
还有一种是登陆主服务器,选择创建聊天室或者你在主服务器注册过,可以进入你注册的聊天室,注意,这个聊天室只是给你保存聊天室名称,创建id(这个是你在主服务器注册的帐号),以及成员列表(在主服务器注册过的成员,方便快速登陆)和成员的密码(防止别人盗用你的名字发表信息),当然没注册过的不记录哈,然后你就可以等待拉
然后别的客户选择第2种模式到主服务器去搜索已经创建的聊天室,如果他选中了你,当然就给住服务器发个请求并把他的ip信息记录到主服务器的数据库里,得到你的ip和端口,然后跟你连接,这样会话就成功拉
补充细节
1
由于许多个人电脑只支持10个连接,所以要设计个模式支持上百人一起聊天,我的想法是,第一台服务器一开始只单独连接9个客户,如果第10个加进来的话,主服务器会自动告诉他第2个客户的ip和端口,你的服务器跟第10个客户并不直接传递信息,而是第2个客户充当转发服务器把大家发到你的这里来的信息转发给第10个客户,第10个客户发的信息也通过第2个客户转发给你
当第21个客户连进来时,主服务器告诉他的是第3个客户的ip和端口,传递信息和第2个一样
这样可以保证直到100个人在一起聊,而你的电脑才连接10个客户,不增加负担
当然如果要支持200个也行,只是聊天可能要卡点了
2
当你的电脑推出连接后,系统会告诉第2个客户,要他承担你的责任,同时选一个进来最早的又没有充当转发服务器的客户承担第2个客户原来的责任,这样,聊天室是你建的,但你下线也不影响聊天室继续聊天