欢迎来到天天文库
浏览记录
ID:25911813
大小:227.01 KB
页数:22页
时间:2018-11-23
《局域网文件传输与消息发送.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《网络程序设计》课程设计报告书题目:局域网文件传输与消息通信专业:网络工程学号:20091423学生姓名:史政法指导教师:魏宁完成日期:2012年06月06日一、题目及要求Window程序设计的基本要求:1.熟练掌握网络的基本概念和原理;2.熟练掌握网络编程接口Socket概念及编程原理;3.掌握基于TCP/IP的Internet编程技术;4.掌握各种软件开发工具的使用过程及方法。本实例程序的技术要点是:l如何从CasyncSocket类派生出自己的WinSock类。l理解WinSock类与应用程序框架的关系。l重点学习流式套接字对象的使用。l处理网络事
2、件的方法。二、系统概要设计1、CSocket类的介绍在MFC中,为了提供面向对象的编程方式而封装了两个WinSock类:一个是CAsyncSocket类,另一个是CSocket类。他们的不同点在于前者使用的是非阻塞模式操作,而后者可以支持阻塞模式的I/O操作。CSocket类是从CAsyncSocket类中继承来的,他为程序员提供了更高级的抽象性。由于CSocket类和CArchive类一起使用,并且管理了通讯的大多数操作,从而使程序员从网络编程的底层细节中解脱了出来,不必使用CAsyncSocket的一些成员函数和一些WindowsSocketAPI函
3、数来处理通信问题。共同使用CSocket和CArchive类对象进行编程是最简单的WinSock编程模式。下面是使用CSocket类进行网络通信的过程(1)构造CSocket类对象(2)用CSocket类对象的Create函数创建WindowsSocket,Create()函数会调用Bind()函数将此函数绑定的指定的地址和端口。(3)Socket创建完毕后,Listen()函数在服务器端进行监听客户的连接请求。(4)在这一步,服务器端调用Accept()函数对客户端发来的请求进行接受和处理,而客户端则调用Connect()函数向服务器发出连接请求。(5
4、)在客户端和服务器端的数据传输完成后,应该分别在两边销毁创建的CSocket对象。2、编程思路和工程实现用MFCAppWizard新建一个给予对话框的工程,在第三步中添加WindowsSocketS的支持,建立的程序界面如右图:控件类型控件IDCaption静态文本statictextIDC_STATIC本机的ip:静态文本statictextIDC_STATIC_SERVPORT要连接的ip:静态文本statictextIDC_STATIC_MSG消息IP地址InternetaddIDC_MYIPIP地址InternetaddIDC_YOURIP编辑框
5、editboxIDC_EDIT_MSG命令按钮buttonIDC_BUTTONCONNECT 启动命令按钮buttonIDC_BUTTON_DISCONNECT 关闭命令按钮buttonIDC_BUTTON_SENDMSG发送消息命令按钮buttonIDC_BUTTON_SEND_FILE传送文件命令按钮buttonIDC_BUTTON_STOP停止传送命令按钮buttonIDCANCEL 退出系统进程processIDC_PROGRESS_SEND_FILE 图1—-程序主对话框中的控件属性图2—-对话框中的控件对象定义相应的成员变量编程思路:首先在对
6、话框中输入要连接的IP地址,然后单击“启动”按钮,要连接的主机也做相同的操作,两边都准备完事后,两台计算机就可以消息和文件的传输了。单击“启动”按钮时,处理函数启动了监听线程来启动服务,主要的语句如下:pThreadListen=::AfxBeginThread(_ListenTcpThread,this);点击“发送消息”按钮时,处理函数启动了消息发送线程来进行消息的传送,语句如下:pThreadSendMsg=::AfxBeginThread(_SendMsgThread,this);当点击“传送文件”按钮时,处理函数启动了文件传输线程来进行文件传输
7、,语句如下:pThreadSendMsg=::AfxBeginThread(_SendFileThread,this);下面主要介绍一下要用到的三个线程和一个文件接收处理函数。首先要产生三个线程对象:CWinThread_ListenTcpThread;CWinThread_SendFileThread;CWinThread_SendMsgThread;一、系统详细设计1.监听线程函数UINT_ListenTcpThread(LPVOIDlparam){CFiletranDlg*pDlg=(CFiletranDlg*)lparam;if(pDlg->St
8、opServer==true)return-1;CSocketsockSrvr;
此文档下载收益归作者所有