《网络程序设计》
课程设计报告书
题目:局域网文件传输与消息通信
专业:网络工程
学号:20091423
学生姓名:史政法
指导教师:魏宁
完成日期:2012年06月06日
题目及要求
Window程序设计的基本要求:
;
;
;
。
本实例程序的技术要点是:
如何从CasyncSocket类派生出自己的WinSock类。
理解WinSock类与应用程序框架的关系。
重点学习流式套接字对象的使用。
处理网络事件的方法。
系统概要设计
1、CSocket类的介绍
在MFC中,为了提供面向对象的编程方式而封装了两个WinSock类:一个是CAsyncSocket类,另一个是CSocket类。他们的不同点在于前者使用的是非阻塞模式操作,而后者可以支持阻塞模式的I/O操作。CSocket类是从CAsyncSocket类中继承来的,他为程序员提供了更高级的抽象性。由于CSocket类和CArchive类一起使用,并且管理了通讯的大多数操作,从而使程序员从网络编程的底层细节中解脱了出来,不必使用CAsyncSocket的一些成员函数和一些Windows Socket API函数来处理通信问题。共同使用CSocket和CArchive类对象进行编程是最简单的WinSock编程模式。
下面是使用CSocket类进行网络通信的过程
构造CSocket类对象
用CSocket类对象的Create函数创建Windows Socket,Create()函数会调用Bind()函数将此函数绑定的指定的地址和端口。
Socket创建完毕后,Listen()函数在服务器端进行监听客户的连接请求。
在这一步,ept()函数对客户端发来的请求进行接受和处理,而客户端则调用Connect()函数向服务器发出连接请求。
在客户端和服务器端的数据传输完成后,应该分别在两边销毁创建的CSocket对象。
2、编程思路和工程实现
用MFC AppWizard新建一个给予对话框的工程,在第三步中添加Windows SocketS的支持,建立的程序界面如右图:
控件类型
控件ID
Caption
静态文本 static text
IDC_STATIC
本机的ip:
静态文本 static text
IDC_STATIC_SERVPORT
要连接的ip:
静态文本 static text
IDC_STATIC_MSG
消息
IP地址 add
IDC_MYIP
IP地址 add
IDC_YOURIP
编辑框 edit box
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 _SendMsgThrea
局域网的文件传输与消息发送 来自淘豆网m.daumloan.com转载请标明出处.