长 春 大 学
课 程 设 计 说 明 书
题目名称 TCP文件传输程序
院(系) 计算机科学技术学院
专业(班级)
学生姓名
指导教师
起止日期 2012-12-29~2013-1-6
目 录
一 课题背景····························3
二 开发环境及相关技术·······················3
三 设计
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图···························3
四 核心程序的实现················``········4
五 文件运行界面··························7
六 设计
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
····························10
七 参考文献····························10
八 附录代码····························11
一、课题背景
在这个信息化时代,计算机网络技术的迅猛发展影响了几乎包括政治、文化、生活、经济在内的每一个角落,推动了人类社会向信息化社会的逐步转变;同时我们也应该清醒地认识到文件传输的问题是计算机网络发展过程中的一个不容忽视的问题。在如今拥塞的网络上,各种数据在争夺着网络资源,如何使传输的文件更加可靠的到达目的地,同时如何友好的解决文件分类分组高效传输等问题都是需要有待提高和完善的地方。其中以TCP快捷的优点赢得好多人的称赞。
二、开发环境及相关技术
2.1开发环境VisualC++6.0简介
Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”
翻译
阿房宫赋翻译下载德汉翻译pdf阿房宫赋翻译下载阿房宫赋翻译下载翻译理论.doc
为机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。
2.2基于VC的socket网络编程原理
套接字socket是一种网络编程接口,实际就是一个通信端点,提供的发送和接收数据的机制。
套接字最基本的分为两类:流套接字和数据报套接字。流套接字:顺序的、无重复的、面向连接的可靠双向传输机制,主要用于TCP通信程序;数据报套接字:无连接的,不保证顺序、无重复、可靠的双向传输,主要用于UDP的通信程序。
2.3TCP协议简介
三、设计流程图
本设计基本设计图如下:
基本设计流程图:
四、核心程序的实现
server接收TCP连接的处理过程:
函数名称 : AcceptProcess
void CServerModel::AcceptProcess()
{
SOCKADDR_IN _sin;
int _size = sizeof(SOCKADDR_IN);
if( (_connectedSock = accept(_localSock, (sockaddr *)&_sin, &_size)) == SOCKET_ERROR )
{
Sleep(1);
}
else
{
_strRemoteAddr = inet_ntoa(_sin.sin_addr);//保存远机地址
_state = CONNECTED; //改变模型状态
::SendMessage(m_hWnd, CONNECT_SUCCESS, 0, 0);
BeginMessageThread(); //开启消息监听线程
}
}
client函数功能连接服务器:
void CClientModel::ConnectProcess()
{
SOCKADDR_IN _sin;
_sin.sin_family = AF_INET;
_sin.sin_port = htons(_port);
_sin.sin_addr.s_addr = inet_addr(_strRemoteAddr);//inet_addr(_strAddress);
if (connect(_connectedSock, (SOCKADDR *)&_sin, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
{
AfxMessageBox("连接失败!");
}
else
{
_state = CONNECTED;
::SendMessage(m_hWnd, CONNECT_SUCCESS, 0, 0);
BeginMessageThread();
}
}
client接收文件信息,确认成功返回TRUE, 否则返回FALSE:
int CClientModel::TransferFileInfo()
{
Message _msg;
memset(&_msg, 0, sizeof(Message));
_msg._messageFromClient._message = RECV_FILE_INFO_ACK;
_msg._messageFromClient._offset = _offset; //发送文件的断点续传位置信息
if (Send(_msg) == SOCKET_ERROR)
{
return FALSE;
}
else
{
if (_offset >= _fileInfo._fileSize)
{
TransferOver();
}
else
{
_state = TRANSFERRING;//发送确认信息之后切换状态
}
return TRUE;
}
}
五、文件运行界面
服务器server初始化界面如图5.1所示:
图5.1
客户端client初始化界面如图5.2所示:
图5.2
建立连接时状态如图5.3所示:
图5.3
传输中server的状态如图5.4所示:
图5.4
服务器server文件传输完成后状态如图5.5所示:
图5.5
任务结束后断开连接时如图5.6所示:
图5.6
六、设计总结
通过本次实验设计,熟悉了套接字Socket、ServerSocket 的编程接口功能和使用,了解文件传输的相应协议,多线程的使用和协作,初步掌握TCP/IP 网络应用程序基本的设计方法和实现技巧。了解了SOCKET编程相关的一些知识以及用法,了解了客户端和服务器端进行通信的相关算法机制,在建立通信的基础上,实现了一些简单的功能。限于自己的能力,对SOCKET编程理解还不够透彻,对网络通信也只局限这么多,还有待进一步的学习和实践以达到对网络的通信机制更深层次的理解。
七、参考文献
[1] 方敏. 网络应用程序设计[M]. 陕西西安:西安电子科技大学出版社, 2005
[2] 赵强. 基于FTP协议的文件传输服务器的研究. 大连海事大学硕士学位论文, 2008
[3] 宋坤,刘锐宁. Visual C++视频技术
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
宝典. 北京:人民邮电出版社, 2008
[4] 谢希仁. 计算机网络(第四版). 北京:电子工业出版社, 2000
[5] 潘爱民. 计算机网络(第四版). 北京:清华大学出版社, 2004
[6] Andrew Koenig著,黄哓春译. C++沉思录. 北京:人民邮电出版社. 2002
[7] 侯俊杰. 深入浅出MFC[M]. 广州:南方出版社, 2001
[8] 刘锐宁, 宋坤. Visual C++从入门到精通 [M]. 北京:清华大学出版社, 2008
[9] 钱能. C++程序设计教程[M].北京:清华大学出版社, 2005
[10] 谭浩强. C程序设计[M]. 北京:清华大学出版社, 2005
8、附录代码
部分源代码:
文件名称 : FileTransferClient.cpp
#include "stdafx.h"
#include "FileTransferClient.h"
#include "FileTransferClientDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFileTransferClientApp
BEGIN_MESSAGE_MAP(CFileTransferClientApp, CWinApp)
//{{AFX_MSG_MAP(CFileTransferClientApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileTransferClientApp construction
CFileTransferClientApp::CFileTransferClientApp()
{
// TODO: add construction code here,
继续阅读