读书人

C++ 局域网聊天室设计有关问题

发布时间: 2013-11-19 22:55:29 作者: rapoo

C++ 局域网聊天室设计问题
我是一名喜欢编程的非计算机学生,我想实现一个局域网聊天室的程序,不带界面的简单的控制台版TCP客户端/服务器我写过,我想实现带界面的。主要功能如下:
1.两台客户端可以通过一台服务器来进行聊天(这个我知道怎么做)
2.比如QQ程序,好友上线了以后,客户端会显示好友上线了,此时好友的头像是高亮显示的;好友下线以后,客户端好友的头像就会变灰了,这个是怎么来编程实现呢?
我看网上的视频说,先在服务器端保存客户端的“在线状态”、“IP地址”、“端口号”、“用户名”“密码”,我大概能看懂他讲的是个什么意思?但是我还是写不出来,好像是没啥思路,还是有点无从下手的感觉。
3. 我现在在培训班上课,跟着一个班听了点网络,服务器端用侦听套接字进行侦听,当有客户端来连接服务器的时候,服务器调用Accept来接受客户端连接。成 功以后,使用新的套接字,就可以进行服务器和客户端之间的通信了,发送数据和接收数据呗。也不难啊,但是我为什么还是写不出完整的聊天室呢?纠结中,在网 上找了点资料也没有完整的实现局域网聊天室的例子。我想要个完整的,最好是能聊天,传文件,语音视频,发送表情,有离线文件,好友上线能够高亮显示的,网 上的基本上也就是能聊天而已,,,该咋办尼
4.今天请教下同学,他们说如果MFC不好实现的话,那服务器端用linux,客户端仅仅用于显示(接到什么包就用于显示什么),服务器和客户端通过发包来解决问题,聊天时发送聊天包,好友更新时发送聊天包,广播时发送广播包,登录时发送登录包,等等。
我仔细想想,也是啊,怎么构造协议包我原来接触过一点,应该能写出来。
我感觉写个大点的东西,我脑子里面就有点乱,东写点西写点,要不就是照网上的抄袭点源代码,拼凑一下子,我真心想自己写出来点东西!!!希望大家帮我分析下,我这样的情况怎么样来解决???
有学计算机的同学遇到过和我类似的情况吗?
或者有从事计算机行业的前辈,指点一下我这只it行业的小鸟,非常感谢!!!!

说明下,网络的一些基础知识我都懂。
[解决办法]

引用:
Quote: 引用:

你要理清思路撒.
对于在线状态. 有两种方式, 一个是客户端定时向服务器查询这个好友是否在线, 另一个是服务器发现用户下线后, 通知其全部好友. 逻辑就是这样了. 怎么查询? 当然是发向服务器发包了, 服务器怎么通知其好友, 当然也是发包了.

大哥,我懂你说的意思了,一个是客户端向服务器拉数据,一个是服务器向客户端推数据,你说发包我也很赞同,但是怎么发包啊?这个有点难了
还请大哥稍微指点下思路,我是新手,非常感谢


服务器肯定保存得有登陆的用户列表撒, 并且每个登陆的用户应该也有一个好友列表吧.
当一个用户退出登陆的时候, 就在服务器登陆列表中查谁是这个用户的好友, 向其发数据包,说好友已经下线.

如果是客户端模式, 那么客户端遍历好友列表, 向服务器请求查询每个好友是否在线, 服务器在登陆列表中查询是否在.

读书人网 >VC/MFC

热点推荐