第10讲使用多线程一个例子_第1页
第10讲使用多线程一个例子_第2页
第10讲使用多线程一个例子_第3页
第10讲使用多线程一个例子_第4页
第10讲使用多线程一个例子_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中科研CASoft软件工程师培训讲义

语音网络聊天

第10章多线程处理的例子王俊峰

中科天地软件人才培训中心

CreatedbyJunfengWang本讲重点提要应用多线程技术创建一个简单聊天室的一个例子。网络聊天室的基本功能要求。其他一些后续知识的说明本章练习实例的说明本例子就是综合利用前面我们所讲的如下只是建立一个网络聊天室用户自定义消息;多线程;全局变量在多线程通讯中的作用;如何创建多线程;多线程控制函数的设计;因为多线程机制一般用于网络程序,网络程序离不开网络编程Socket,所以本例子还用到了我们下一讲讲用到的Socket编程的知识。功能要求说明对于每一个客户端用户的连接请求,服务器主线程都自动创建一个专用的线程来相应。前面知识的学习,我们知道,多线程通讯可以使用多种手段实现,本例子要求使用全局变量和自定义消息机制来实现线程间的通讯。本例子要求指定通讯的目标计算机的IP地址,(比如本地计算机的默认地址127.0.0.1)和端口号(默认端口号假使指定为5000)功能要求说明(续)聊天室一般提供自动刷新屏幕(自动发送)和手动刷新(手动发送)两种功能。本聊天室也提供两种功能,只是对大多数学员来说实现手动发送信息就可以了发送信息由于网路的原因,有时可能出现发送不成功的现象,以致出现异常,我们要求指定一个相应时间,一般来说在局域网内,这个时间可以设置小点,比如:1秒功能要求说明(续)本例子中,用户首先启动服务器线程,也就是接收数据的计算机上运行的线程(本例子中是指我们指定IP地址的计算机上运行的监听线程),然后在发送数据的输入框内输入将要发送的数据文本,单击发送即可把信息发到指定的计算机的监听线程用户可以尝试着把接收到的信息保存到一个文本文件中,随时备用户查看接收到的数据信息,就想QQ聊天工具中的信息管理器一样,由于本周课程主要是讲多线程实现的,因此不要求大家做这个功能最终程序的运行界面本例子最终的运行界面如下:重点、难点介绍定义实现线程间通讯的消息

//在线程中刷新对话框#defineWM_MSG_WRITE(WM_USER+101)//终止发送线程#defineWM_MSG_STOP(WM_USER+102)//在线程中循环发送数据#defineWM_MSG_SEND(WM_USER+103)//终止监听线程#defineWM_MSG_STOP1(WM_USER+104)重点、难点介绍(续)为了保存每个连接的信息,本程序定义了一个如下的数据结构:

#include<afxsock.h>//MFCsocket扩展头文件

#include“MySocket.h“//为实现通讯所定义的Socket头文件

//数据结构,定义每个客户连接的信息

structSockList { CMySocket*pSock; CStringipAddr; };重点、难点介绍(续)定义全局变量CPtrListm_pList;//服务器为请求建立的Socket队列SockList*sockhead;//每个连接的详细信息CSocket*m_listenSock;CMySocket*pSock;//为实现通讯定义的Socket类定义线程控制函数

//监听线程控制函数

UINT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论