网站地图| 免费获取|
毕业论文网
  • 网站首页|
  • 论文范文|
  • 论文降重|
  • 职称论文发表|
  • 合作期刊|
  • 论文下载|
  • 计算机论文|
  • 外文翻译|
  • 免费论文|
  • 论文资料|
  • 论文开题报告
搜索

当前位置:毕业论文网 -> 免费论文 -> 计算机论文 -> 免费vc++网上寻呼QICQ源代码(附带文档)(十二)
计算机论文资料| ASP设计| Delphi| VB设计| JSP设计| ASP.NET设计| VB.NET| java设计| VC| pb| VS| dreamweaver| c#.net| vf| VC++| 计算机论文范文| 论文下载| 自动化论文

免费vc++网上寻呼QICQ源代码(附带文档)(十二)

最新活动:微信集50个赞就可获取任意一篇钻石会员文档。详情见微信集赞换文档
免费vc++网上寻呼QICQ源代码(附带文档)(十二) s;          地址
 CString Department;        部门
 CString Description;        个人简介
};

消息子类CmsgPerson
在申请帐号时发送的消息类
class CMsgPerson : public CData 
{
public:
 virtual BOOL LoadFromBuf();
 virtual void PackToBuf();
 CMsgPerson();
 virtual ~CMsgPerson();
 CString Name;
 BYTE Sex;
 BYTE Canbeadd;
 DWORD PhotoId; 
 CString Age,Phone,Fax,Email,Homepage,Address,Password;
 CString Department,Description;
};

消息子类CShowOnlinePeople
在请求查看在线的人后服务器发送回的数据类
class CShowOnlinePeople : public CData 
{
public:
 virtual BOOL LoadFromBuf();
 virtual void PackToBuf();
 CShowOnlinePeople();
 virtual ~CShowOnlinePeople();
 CArray<BYTE,BYTE>aCanbeAdd;           能否被加入信息的数组
 CArray<DWORD,DWORD>aPhotoId;        头像数组
 CArray<DWORD,DWORD>aId;             帐号数组
 CArray<CString,CString>aName;            姓名数组
 CArray<CString,CString>aDepartment;    部门数组
};

§4.9发送数据的确认消息的编码方案

 这个确认消息的前K位,是程序头文件中定义的ResponseMsg字符串来确定的,若要修改时,修改头文件中的宏定义就可以了,但是注意,需要服务器,客户端同时修改,否则就会出来确认信息不统一,无法得到正确结果的错误。
 
 发送数据时,可以多线程的发送,在发送这些信息时,如何知道一个确认消息,是那一个发送数据的呢?所以,每发送的数据,都必须加上一定的标志。
 
 每个发送的数据类中,都有一个成员为DWORD类型的This,发送数据的socket类中,都有一个统计当前共发送了多少个数据的成员m_nTotalSend。
 This的编码方案为:This=m_nTotalSend%CheckBufLength
 CheckBufLength是一段缓冲区的长度,每当发送数据时,发送程序就会把m_arBuf[This]置为0,然后等待,直到超时或其值变为1。当接受方接受到数据后,就会把ResponseMsg再加上4字节的从接受数据中取出的This,作为确认信息,发送回发送来数据的地址和端口。发送端接受到确认信息后,将按This的值,把m_arBuf缓冲区的m_arBuf[This]置为1,表示这个位置的数据发送成功。这样,就较好的解决了,发回确认信息的区别的问题。


§4.10服务器端的分配用户帐号的策略

 有一个编号的基数UserIdRadix,从这个基数开始,随着用户的增加而增加,简单的说,如果第一个用户要申请帐号,它的帐号将为UserIdRadix+1,第二个才UserIdRadix+2……。而且,Users表中的UserId和Id的对应关系为UserId+UserIdRadix=Id,(UserId是一个自动编号的字段)

采用这种算法的好处:
 处理的速度很快,这样,看是否为合法用户(是否存在)只要这个帐号大于UserIdRadix,且小于等于MaxUserId就可以了,在数据库表Users中查找数据,用UserId进行匹配,很快的速度。而且由于号码的连续性,也使我用数组m_pUsers存储在线人信息很方便,在数组中定位提供了极大的方便,很算法简单,又有很快的响应速度,能够适应较多人在线的情况。

采用这种算法的局限性:
在服务器端,最好不要删除某用户,也不要随便修改数据库中的数据,特别是Users中的Id字段,因为Id与UserId的对应关系

为了减少数据库操作,提高服务器性能,我把很常用的信息存储在内存中,因为现在的内存一般都很大,即使有1000个用户,也不过是多占用几十K的内存而以
在启动服务时,我把每个用户的ID,PhotoId,Name,canbeadd,department的属性读出,并存于m_pUsers指的数组中。


§4.11 服务器的应用程序类CServerApp的设计

CServerApp类,定义了服务器全局的数据结构,
class CServerApp : public CWinApp
{
public:
 void SaveMyProfileSettings();      //保存配置文件
 BOOL LoadMyProfileSettings();    //读取配置文件
 CServerApp();
 CServerSocket m_Socket;         //服务器端的上层socket接口
 CArray<DWORD,DWORD>m_anPort;    //服务器端开设的侦听端口数组
 int m_nSendNum;    &

首页 上一页 9 10 11 12 13 14 15 下一页 尾页 12/17/17

免费vc++网上寻呼QICQ源代码(附带文档)(十二)由毕业论文网(www.huoyuandh.com)会员上传。
原创论文资料流程 相关论文
上一篇:免费vc++医药管理系统+文档 下一篇:免费vc中国象棋软件
推荐论文 本专业最新论文
Tags:免费 网上 寻呼 QICQ 源代码 附带 文档 2010-04-02 16:32:55【返回顶部】
精彩推荐
发表论文

联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士论文资料


毕业论文网提供论文范文,论文代发,原创论文资料

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2020 毕业论文网 版权所有