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

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

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

p;
§4.15客户端处理服务器发送来数据的算法
 
 在客户端接受到数据后,若不是确认消息,则向父窗口发送一个WM_RECIEVE_MSG,将把接受到的数据做为参数传递过来。
 在消息处理函数ProcRecv进行处理接受到的数据。对接受到的不同数据类型,分别进行相应处理。
 现在,对其中一部分数据进行分析:
 
一.case SEND_MSG_TO_FRIEND:接受好友发来的信息
 首先判断消息的发送者是不是在自己的好友列表中,若是,则保存下当前用户的信息指针(pInfo)和状态指针(pState),若不是,则在自己的陌生人列表中查找是否有这个人,找到,则保存下当前用户的信息指针(pInfo)和状态指针(pState),没有找到,则说明是一个新的陌生人,新建其数据结构,添加到陌生人列表中,并保存其用户的信息指针(pInfo)和状态指针(pState)。然后如果pState->pRecv指向的对话框类实例没有建立,则建立实例。最后,向pState->pRecv指向的对话框发送WM_RECVMSG消息,并把pInfo和pState作为参数传递过去,让其显示接受到的信息。
 
二.case ONLINE: 某人上线的消息
 寻找好友中是否有这个人,有则保存其在线在状态、IP和Port,然后让其加亮显示。
 
 三.Case ONHIDE 某人隐身
 寻找好友中是否有这个人,有则保存其隐身状态、IP和Port,然后让其变灰显示。
 
 四  case OFFLINE 某人下线
 寻找好友中是否有这个人,有则保存其离线在状态,然后让其变灰显示。
 
 五 case ONLINE_OK  上线成功
 设置任务栏图标为上线状态,启动请求每用户详细资料的线程
 
 六 case ONHIDE_OK  隐身登陆成功
    设置任务栏图标为隐身状态,启动请求每用户详细资料的线程
 
其它的信息的处理的详细情况,这里就不介绍了,客户端的界面设计较为繁琐细节方面很多,写起来较为麻烦,而且,我客户端也没有完成设计完成。

第 5 章  全文总结与工作展望

§5.1 全文总结
 本文重点讨论客户端/服务器的程序的设计方法和过程,对整个系统进行了详细设计,利用面向对象的方法,进行整个系统的设计。
本文主要做了以下工作:
 ⑴ 列举了网络寻呼软件的系统和界面需求。
 ⑵ 陈述了客户端/服务器程序的设计原理和过程
 ⑶ 根据系统需求,进行整个系统的各个部分的详细设计。
 
§5.2 工作展望
 本文主要是对本软件服务器端的设计作了比较详细的介绍,并对服务器端进行了初步的开发。而客户端的设计有很多都需要完善。客户端是给用户使用的,从方便和美观上,还都还有很多需要完善的地方。而且,由于时间关系,客户端还有些功能没有完全。如果要使本系统成为一个实际应用系统并在局域网上实际应用,除了完成客户端的功能外,笔者认为还应做以下的完善和开发工作:
 ⑴ 进一步完善底层通讯协议,使能够更好的处理数据的发送和接受。
 ⑵ 多线程下的对临界数据访问的问题。
 ⑶ 对发送的数据,进行一定的加密措施,使之更加安全可靠。
 ⑷ 对本地用户的密码的加密问题,在本程序中,没有对本地密码进行加密。
 ⑸ 在客户端系统,功能的设置有待进一步丰富,功能的实现还有
待完善和改进。
 ⑹ 在客户端处理中,响应从服务器发来的数据,是在主线程里执行的,所以,当接受数据忙时,就会出现没有响应的情况。进一步考虑,如何能改善这种情况。
第 6 章  附录

§6.1 查错日志

四月十五日
 编写socket的程序,必须在程序启动初始化时调用AfxSocketInit()函数,否则,使用socket通讯,将得不到任何结果,没有任何响应

四月十八日
 在 *((DWORD*)m_szResponse+m_nrLength)=pData->This;
中,少加一个括号,使响应信息回应不正确:浪费1:30的时间。
shall be :  *((DWORD*)(m_szResponse+m_nrLength))=pData->This;

四月二十一日
 虽然说,为了很编译加快,最好不要头文件中包含头文件,但:
1。如果从一个自己写的类进行继承,则必须包含此类头文件
2。注意,每个实现文件,都要包含Stdafx.h

四月二十五日
 记住,在SQL 语句中,字符串要用' ' ,单引号,使用””双引号,访问数据库将提示SQL错误

四月二十八日
 取数据库中的字符串数据时,如果用普通方法
msg.name=*(s1.m_pstring);
如果此字符串为空,则会出异常,
解决方法:
如果是字符串,可用  rs.GetFieldValue(3,msg.name);  or
if(s1.m_pstring!=NULL)msg.name=*(s1.m_pstring);

五月八日
if(i==m_nSendMaxIndex)
 while(!m_aSendData[m_nSendMaxIndex])m_nSendMaxIndex--;
should be
while(!m_aSendData[m_nSendMaxIndex]&&m_nSendMaxIndex>0)m_nSendMaxIndex--;
否则,将使m_nSendMaxIndex减为负数

五月十日
DWORD This=*(buff+nRead-4);
与是有很大不同的,下面一个才正确。上一个取出一个字符数据,然后转化为DWORD赋值给This
DWORD This=*((DWORD*)(buff+nRead-4));
查这个错误,花了2小时,
客户端/服务器程序不大好调试,两个都得运行,一起调试,而且还是多线程的,总之调试起来使麻烦。

五月十五日
今天是最糟的一天,全天都在查错,修改一个地方,可能会有许多地方都被牵连到了,都需要修改,在修改时,不免又出现了新的错误,这真是个大问题。
发现了一个非常奇怪的问题,只是一个非常简单,非常。。。。。
忘记写break;

五月十七日
我今天把底层通讯的检查回应消息是否回来的算法修改了。
以前的算法是:
 有一个缓冲区,发送一个数据,就把发送这个数据的内存起始地址存在这个缓冲区中,当回应消息发回来时,就是这个缓冲区中找,找这(This)与这内存地址相同的,就把它赋为0,发送程序若在这个缓冲区中没有找到这个内存地址,就表示数据发送成功,找到了,就表示还不成功。
 现在想来,

首页 上一页 13 14 15 16 17 下一页 尾页 16/17/17

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

相关栏目

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


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

 

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

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

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