免费获取|
论文天下网
  • 论文天下网 |
  • 原创毕业论文 |
  • 论文范文 |
  • 论文下载 |
  • 计算机论文 |
  • 论文降重 |
  • 毕业论文 |
  • 外文翻译 |
  • 免费论文 |
  • 开题报告 |
  • 心得体会 |

当前位置:论文天下网 -> 免费论文 -> 计算机论文

免费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++医药管理系统+论文 下一篇:免费vc中国象棋软件
推荐论文 本专业最新论文
Tags:免费 网上 寻呼 QICQ 源代码 附带 论文 【返回顶部】

相关栏目

自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文


关于我们 | 联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 原创毕业论文

 

论文天下网提供论文检测,论文降重,论文范文,论文排版,网站永久域名WWW.GEPUW.NET

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

Copyright@ 2009-2022 GEPUW.NET 论文天下网 版权所有