蚀袇袅肀《网络程序设计》莀衿课程设计报告书羃螄肁蚆莅膃袁螇蒄题目:局域网文件传输与消息通信薃专业:网络工程莇学号:20091423蝿学生姓名:史政法螆指导教师:魏宁肂完成日期:2012年06月06日肈薆羅蒁题目及要求袈Window程序设计的基本要求:;;;。虿本实例程序的技术要点是:莅如何从CasyncSocket类派生出自己的WinSock类。芀理解WinSock类与应用程序框架的关系。艿重点学习流式套接字对象的使用。蒆处理网络事件的方法。薄系统概要设计羃1、CSocket类的介绍聿 在MFC中,为了提供面向对象的编程方式而封装了两个WinSock类:一个是CAsyncSocket类,另一个是CSocket类。他们的不同点在于前者使用的是非阻塞模式操作,而后者可以支持阻塞模式的I/O操作。CSocket类是从CAsyncSocket类中继承来的,他为程序员提供了更高级的抽象性。由于CSocket类和CArchive类一起使用,并且管理了通讯的大多数操作,从而使程序员从网络编程的底层细节中解脱了出来,不必使用CAsyncSocket的一些成员函数和一些WindowsSocketAPI函数来处理通信问题。共同使用CSocket和CArchive类对象进行编程是最简单的WinSock编程模式。薈袆下面是使用CSocket类进行网络通信的过程蒃构造CSocket类对象螀用CSocket类对象的Create函数创建WindowsSocket,Create()函数会调用Bind()函数将此函数绑定的指定的地址和端口。莅Socket创建完毕后,Listen()函数在服务器端进行监听客户的连接请求。羄在这一步,ept()函数对客户端发来的请求进行接受和处理,而客户端则调用Connect()函数向服务器发出连接请求。袂在客户端和服务器端的数据传输完成后,应该分别在两边销毁创建的CSocket对象。薀2、编程思路和工程实现莆 用MFCAppWizard新建一个给予对话框的工程,在第三步中添加WindowsSocketS的支持,建立的程序界面如右图:膃节芁蒈控件类型蒅蚁控件ID肁芅Caption薄膀静态文本statictext螁莆IDC_STATIC羆本机的ip:袄静态文本statictext芈莈IDC_STATIC_SERVPORT肄芃要连接的ip:add艿肅肆IDC_YOURIP羁羀膇编辑框editbox膄蚄IDC_EDIT_MSG蚀芈命令按钮button芃肃蒀IDC_BUTTONCONNECT羅 启动蚅薃命令按钮button膁肇螃IDC_BUTTON_DISCONNECT羂 关闭羁膈命令按钮button膆莁IDC_BUTTON_SENDMSG蚁发送消息羆芄命令按钮button螁膈羇IDC_BUTTON_SEND_FILE莂传送文件芀袈命令按钮button肈螅羄IDC_BUTTON_STOP虿停止传送袆袃命令按钮button莃荿袇IDCANCEL芆 退出系统螂腿进程process罿莄IDC_PROGRESS_SEND_FILE膂 袀螆图1—-程序主对话框中的控件属性螆袅袄肁聿莄蚄膃膇羈莅羀薀蒇膅图2—-对话框中的控件对象定义相应的成员变量羁蚈袇编程思路:首先在对话框中输入要连接的IP地址,然后单击“启动”按钮,要连接的主机也做相同的操作,两边都准备完事后,两台计算机就可以消息和文件的传输了。薂单击“启动”按钮时,处理函数启动了监听线程来启动服务,主要的语句如下:pThreadListen=::AfxBeginThread(_ListenTcpThread,this);肃 点击“发送消息”按钮时,处理函数启动了消息发送线程来进行消息的传送,语句如下:肀 pThreadSendMsg=::AfxBeginThread(_SendMsgThread,this);芆 当点击“传送文件”按钮时,处理函数启动了文件传输线程来进行文件传输,语句如下:莂 pThreadSendMsg=::AfxBeginThread(_SendFileThread,this);袀下面主要介绍一下要用到的三个线程和一个文件接收处理函数。首先要产生三个线程对象:腿 CWinThread_ListenTcpThread;螅 CWinThread_SendFileThread;肂 CWinThread_SendMsgThread;袂芇系统详细设计膅监听线程函数袃UINT_ListenTcpThread(LPVOIDlparam)羃{虿CFiletranDlg*pDlg=(CFiletranDlg*)lparam;薄 if(pD
局域网文件传输与消息发送 来自淘豆网m.daumloan.com转载请标明出处.