计算机网络课程设计报告文件传输协议的简单实现
- 格式:doc
- 大小:48.00 KB
- 文档页数:9
tcp报文发送课程设计一、课程目标知识目标:1. 学生能理解TCP协议的基本原理,掌握TCP报文的结构和组成。
2. 学生能描述TCP报文的发送过程,包括建立连接、数据传输和关闭连接。
3. 学生能解释TCP报文中序列号、确认号的作用,了解数据可靠传输的机制。
技能目标:1. 学生能够运用所学知识,构建简单的TCP报文发送程序,实现数据的可靠传输。
2. 学生能够分析网络通信过程中可能出现的异常情况,并提出相应的解决方案。
情感态度价值观目标:1. 学生通过学习TCP报文发送过程,培养对网络通信的兴趣和热情,提高信息素养。
2. 学生能够认识到网络通信技术在日常生活和未来发展中的重要性,增强社会责任感和创新意识。
3. 学生在合作学习过程中,培养团队协作能力和沟通表达能力,尊重他人意见,共同解决问题。
课程性质:本课程为计算机网络基础课程,旨在帮助学生掌握TCP协议的基本原理和实际应用。
学生特点:学生处于高年级阶段,具有一定的网络知识基础,具备一定的编程能力。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的实际操作能力和问题解决能力。
通过分组合作、实践操作等形式,激发学生的学习兴趣,培养其团队协作能力和创新精神。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的达成。
二、教学内容1. TCP协议基本原理:讲解TCP协议的特点、工作流程及可靠性保证机制。
- 教材章节:第三章“传输层协议”第二节“TCP协议”2. TCP报文结构:详细介绍TCP报文的组成,包括源端口、目的端口、序列号、确认号等字段。
- 教材章节:第三章“传输层协议”第二节“TCP协议”3. TCP连接建立与终止:讲解TCP三次握手和四次挥手的过程,分析其原理。
- 教材章节:第三章“传输层协议”第二节“TCP协议”4. 数据传输过程:阐述TCP报文在数据传输过程中的可靠性保证措施,如序列号、确认应答、流量控制等。
- 教材章节:第三章“传输层协议”第二节“TCP协议”5. 实践环节:组织学生分组进行TCP报文发送程序编写,实现简单数据传输。
能可靠工作的文件传输工具1 理论知识(一级标题,黑体四号,加粗,单倍行距,段前后6磅)1.1 传输文件工具工作原理分析(二级标题,宋体四号,加粗,单倍行距,段前后6磅)程序使用的是基于TCP/IP的协议,用套接字来实现文件的传输。
1.1.1 TCP/IP的网络体系结构TCP/IP协议采用层次体系结构,如图2所示,从图中可以看出,每一层在逻辑上都与通信端的对应层相连接。
图中所示的服务器程序持续监听通信客户端;客户端仅周期性地与服务器相连接以交换数据,其中TCP协议层提供相当于OSI参考模型中传输层的服务,为收、发端应用程序提供通信;IP协议层负责提供统一的数据报;链路层主要功能是收、发IP层的IP数据报;TCP/IP之上是该协议提供的各种服务,而底层网络可以是不同的物理网络,如Ethernet、Token Ring、X.25公共分组交换网等。
图1 TCP/IP协议层模型(LAN)1.1.2 套接字(Sockets)套接字(Sockets)最早是由Berkeley大学提出在UNIX操作系统下实现TCP/IP通信协议的开发接口,随着Internet在全球范围内的广泛使用,Sockets已成为网络编程的通用接口。
Microsoft 公司以Sockets为基础开发的Winsock建立了Windows环境下网络间的编程接口。
套接字是对网络中不同主机上应用进程之间进行双向通信的端点的抽象,一个套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制。
套接字可以分为流式套接字(Stream Sockets)、数据报套接字(Datagram Sockets)和原始套接字(Raw Sockets)。
流式套接字最常用的套接字,提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输;数据报套接字提供无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性;原始套接字提供对下层网络的通信协议的访问,主要用于开发新的协议或用于提取较隐蔽的功能。
《计算机网络系统实践》报告设计题目:网络文件传输学生姓名:专业班级:计算机科学与技术2016 年 1 月一、设计要求1. 实现单线程文件传输功能;2. 在以上基础上,掌握多线程技术,在文件网络传输时,可选择单线程或多线程;3. 加入异常控制依据,增强程序的鲁棒性(Robust);4. 了解如何提高套接字传输的速率,以及如何加强传输的稳定性。
二、开发环境与工具Eclips+java三、设计原理1.文件共享传输方式原理:主要采用TCPIP协议访问资源,一般是利用名字解析NETBIOS,dns,wins获得对方的IP地址,获取对方共享资源列表,当点击共享资源时候,客户机对服务器端点发出建立会话请求,这发生在传输层。
为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程是这样的:第一步,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。
以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。
会话连接建立后,对方检查共享资源的设置,通过注册表中的共享级别。
2.客户端:通过ss.socket()这个方法获取服务器的socket对象,并同过BufferReader来获取通道中的字节流中的内容3.服务器:将要发送的文件事先封装到通道内,并通过BufferWriter写入通道中四、系统功能描述及软件模块划分网络文件传输所实现的主要功能:网络文件传输主要由两个方面组成:1.客户端 2.服务器1.客户端:接受服务器发来的文件2.服务器:发送要发送的文件五、设计步骤1.服务器端的设计:①创建服务器对象ServerSocket ss = new ServerSocket (11111);②循环等待客户端的连接,若有客户端访问,就单独为它创建一个线程While(true){Socket s = ss.accept();New thread(new UserThread(s).start());}③封装字节流BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));④给出反馈bwServer.write(“文件上传成功”);⑤释放资源bw.close();2.客户端的设计①创建客户端对象Sockert s = new Socket();②封装文件BufferedWriter bw = new BUfferWriter(newOutputStreamWriter(s.getOutputStream()));③从通道中接受并反馈String client = brClient.readLine();System.out.println(client);④释放资源s.colse();六、关键问题及其解决方法1.怎样实现多线程的问题:While(true){Socket s = ss.accept();New thread(new UserThread(s).start());}2.怎样让// 封装通道内的流BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));// 封装文本文件// BufferedWriter bw = new BufferedWriter(new// FileWriter("Copy.java"));// 为了防止名称冲突String newName = System.currentTimeMillis() + ".txt";BufferedWriter bw = new BufferedWriter(new FileWriter(newName));String line = null;while ((line = br.readLine()) != null) { // 阻塞bw.write(line);bw.newLine();bw.flush();}客户端与服务器端运用TCP协议进行连接七、设计结果1.功能:实现客户端与服务器之间进行文件的传输2.课后思考题①套接字有基于阻塞和非阻塞的工作方式,试问你编写的程序是基于阻塞还是非阻塞的?各有什么优缺点?我编写的程序是基于阻塞的。
目录摘要 (3)第一章课程设计要求 (4)一、设计任务 (3)1.1.1 课程设计内容 (3)1.1.2、课程设计的基本要求 (3)二、设计基本思路及相关理论 (3)1.2.1、TCP/IP协议 (3)1.2.2、客户机/服务器模型 (4)1.2.3、设计基本思路 (4)第二章设计概要 (5)2.1 功能设计 (5)2.2 程序系统功能模块 (6)2.3 功能分析 (7)2.3.1 功能流程图: (7)2.3.2 程序主要功能说明 (7)第三章调试分析与测试结果 (23)3.1服务器端与客户端 (23)3.2文件管理的过程 (26)第四章设计总结 (28)参考文献 (28)课程设计评分表 (30)摘要网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。
Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。
如果了解Unix系统的输入和输出的话,就很容易了解Socket了。
常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。
流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet上的TCP/IP网络编程,必须理解Socket接口。
网络编程文件传输实验报告CKBOOD was revised in the early morning of December 17, 2020.基于TCP一、1、2、sockets 二、本程序是基于TCP/IP协议栈的网络编程,使用C语言,利用操作系统提供的套接字网络编程接口进行编写TCP协议是其中重要的传输协议,为应用层提供可靠的端到端的流传输服务.其中套接字取值sock_stream即为TCP的流传输服务Windows socket包含了人们所熟悉的Berkeley Socket风格的函数库,也包含了一组针对windows的扩展库函数,以使程序员能充分的利用windows驱动消息机制进行编程。
Windows Sockets的规范本意在于提供给应用开发者一套简单的API,并让个网络应用软件开发商遵守该协议。
此外在一个特定的版本windows基础上,Windows socket也定义了一个二进制借口(ABI),从此来保证Windowssocket API应用程序能够在任何符合Windows socket协议的实现上工作。
三、设计概述1、创建套接字服务进程和客户进程在实现通信前必须创建各自的套接字,然后才能用相应的套接字进行发送接收操作,服务进程总是先于客户端进程启动,服务器端进程和客户端进程创建套接字。
Socket()函数实现代码如下:SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);....\n");....\n");//得到主机开始传送消息recv(clientSocket,receiveBuf,101,0);printf("%s\n",receiveBuf);if(strcmp(receiveBuf,"开始传送")==0){//传送文件长度char sendBuf[20];ltoa(length,sendBuf,10);send(clientSocket,sendBuf,21,0);fseek(fp,0L,SEEK_SET);//传送文件long int y=0;double cent;char trans[SIZE];while(!feof(fp)){fread(trans,1,SIZE,fp);y=y+SIZE;if(y<length){cent=(double)y*(double)length;printf("已发送:%%\n",cent); send(clientSocket,trans,SIZE+1,0); } else{ send(clientSocket,trans,length+SIZE-y+1,0);closesocket(clientSocket); WSACleanup(); } }fclose(fp);}printf("文件发送完毕\n");system("pause");}四、实验结果及分析:客户端运行结果服务器端运行结果五、心得体会:网络编程的实验课虽然只有八次,但是我们充分了解了各种网络编程和winsock控件的知识,了解了TCP/IP协议的相关知识以及其中两个重要协议TCP UDP的特点与差异,进一步学习了文件传输等知识,创建套接字监听传输关闭等过程,直到最后写出C/S模式的文件传输程序感觉我们巩固了教材的内容实践的能力也得到了提高不足之处就是自己粗心大意,在写代码时候参数注解等经常注明的不够好,希望以后能养成良好的编程习惯。
课程设计课程名称计算机网络课程设计题目名称文件传输协议的简单设计与实现学生学院专业班级___ _学号学生姓名______ _________指导教师______ _____2010 年 1 月 5 日设计摘要关键词:SOCKET编程,FTPclient/server程序摘要:本课程设计包含了文件传输协议的简单设计与实现。
文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。
文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),实现下述命令功能:get , put, pwd, dir, cd, ?, quit 等,利用了已有网络环境设计并实现简单应用层协议。
本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。
目录1、文件传输协议的简单设计与实现------------------------------181. 1 具体设计任务----------------------------------------------18 1.2 基本思路及所涉及的相关理论--------------------------------181.2.1基本思路-------------------------------------------------182.2.2 相关理论--------------------------------------------18 1.3设计流程图------------------------------------------------191.4实验运行情况----------------------------------------------191.5 核心程序--------------------------------------------------222.5.1 服务器(sever)程序---------------------------------222.5.2 客户(client)程序----------------------------------291.6心得体会-----------------------------------------------------------------------------37参考文献--------------------------------------------------------382、文件传输协议的简单设计与实现2. 1 具体设计任务计算机网络实验环境建立在TCP/IP 网络体系结构之上。
计算机网络技术第四版课程设计一、设计题目本次计算机网络技术课程设计的题目是“基于TCP协议的文件传输程序实现”。
二、设计目的计算机网络技术是网络工程专业的核心基础课程之一,课程涉及到计算机网络领域的各个方向,例如网络协议、网络体系结构、路由协议、网络安全等。
通过本次课程设计,旨在让学生深入了解TCP协议的应用,掌握TCP协议的实现过程和技术要点,提高学生对计算机网络技术的理解和应用能力。
三、设计要求实现一个基于TCP协议的文件传输程序,要求如下:1.接收方和发送方分别处于不同的机器上。
2.文件传输过程通过TCP协议完成。
3.实现断点续传功能。
4.通过命令行界面输入传输文件的路径和传输模式(上传/下载)等必要信息。
四、设计流程1. 建立网络连接建立TCP连接是实现文件传输的第一步,需要使用Python的socket库实现。
按照TCP三次握手的规则,建立与对方的链接。
2. 传输文件使用Python的文件读取方式,将要传输的文件读取至内存中。
使用TCP协议,将文件分成多个数据块,依次传输至对方机器。
3. 断点续传在传输文件的过程中,可能会出现意外断开连接的情况。
为了实现断点续传功能,传输过程中需要保存已经传输的文件块,当重新建立连接后继续传输。
4. 命令行控制实现一个命令行界面,通过命令行输入文件传输的相关信息,例如待传输文件的路径、传输模式(上传/下载)等信息。
通过分析用户的操作,执行相应的文件传输操作,并在命令行上显示传输过程的相关信息。
五、技术要点1.Python Socket编程2.TCP协议3.文件读取和写入4.断点续传5.命令行控制六、设计结论通过本次基于TCP协议的文件传输程序实现的计算机网络技术课程设计,我们深入了解了TCP协议的应用过程,掌握了TCP协议的实现技术要点,并实现了文件传输过程中常见的断点续传功能和命令行控制。
这些技术点均是计算机网络技术课程中的重点内容,对我们深入学习和理解计算机网络技术的概念和应用具有重要的帮助和启示。
目录摘要 (3)第一章课程设计要求 (4)一、设计任务 (4)课程设计内容 (4)、课程设计的基本要求 (4)二、设计基本思路及相关理论 (4)、TCP/IP协议 (4)]、客户机/服务器模型 (5)、设计基本思路 (5)第二章设计概要 (6)功能设计 (6)程序系统功能模块 (7)功能分析 (8)功能流程图: (8)程序主要功能说明 (8))第三章调试分析与测试结果 (24)服务器端与客户端 (24)文件管理的过程 (27)第四章设计总结 (29)参考文献 (29)课程设计评分表 (30)~*摘要网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。
Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet 上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。
如果了解Unix系统的输入和输出的话,就很容易了解Socket了。
常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket (SOCK_DGRAM)。
流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet上的TCP/IP网络编程,必须理解Socket接口。
关键字:Socket、文件传输、多线程第一章课程设计要求]一、设计任务1.1.1 课程设计内容文件传输协议的简单设计与实现:学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧,加深对客户/服务器的工作模式的认识。
一、实验目的1. 理解文件传送协议的基本原理和流程。
2. 掌握常用的文件传送协议,如FTP、TFTP等。
3. 学习使用文件传送协议进行文件的上传和下载。
4. 了解文件传送协议在实际应用中的优势和局限性。
二、实验环境1. 操作系统:Windows 102. 软件环境:Cygwin、FTP Server、FTP Client3. 网络环境:局域网三、实验内容1. FTP协议实验2. TFTP协议实验四、实验步骤1. FTP协议实验(1)搭建FTP服务器1)在Cygwin中安装FTP服务器。
2)配置FTP服务器,设置用户名和密码。
3)启动FTP服务器。
(2)使用FTP客户端连接FTP服务器1)在Cygwin中安装FTP客户端。
2)使用FTP客户端连接到FTP服务器。
3)登录FTP服务器。
(3)上传和下载文件1)在FTP客户端选择要上传的文件。
2)使用FTP客户端将文件上传到FTP服务器。
3)在FTP客户端选择要下载的文件。
4)使用FTP客户端将文件从FTP服务器下载到本地。
2. TFTP协议实验(1)搭建TFTP服务器1)在Cygwin中安装TFTP服务器。
2)配置TFTP服务器,设置共享目录。
3)启动TFTP服务器。
(2)使用TFTP客户端连接TFTP服务器1)在Cygwin中安装TFTP客户端。
2)使用TFTP客户端连接到TFTP服务器。
(3)上传和下载文件1)在TFTP客户端选择要上传的文件。
2)使用TFTP客户端将文件上传到TFTP服务器。
3)在TFTP客户端选择要下载的文件。
4)使用TFTP客户端将文件从TFTP服务器下载到本地。
五、实验结果与分析1. FTP协议实验实验结果表明,使用FTP协议可以方便地进行文件的上传和下载。
FTP服务器和客户端的配置较为简单,易于操作。
但在实际应用中,FTP协议存在以下局限性:(1)FTP协议不是加密传输,存在安全隐患。
(2)FTP协议传输速度较慢。
(3)FTP协议不支持断点续传。
课程设计课程名称_计算机网络题目名称_文件传输协议的简单设计与实现学生学院_自动化学院专业班级_13级物联网工程1班学号_**********学生姓名梁建斌指导教师刘洪涛2015年12月25日摘要文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问。
本设计是基于Eclipse平台下使用Java实现的FTP文件传输。
实现基本的文件传输操作。
建立客户端和服务器、客户端基于TCP Socket进行数据传输,采用多线程进行数据传输,套接字来实现。
在实现过程中采用类与对象的思想进行规划,体验了一个软件开发过程的具体实现步骤。
关键字:Java网络编程FTP文件传输文件上传下载文件操作1目录一、实验目的 (3)二、实验内容和要求 (3)1、实验内容 (3)2、具体要求 (3)三、实验主要仪器设备和材料 (3)四、基本原理 (3)1.FTP系统模型 (3)2. 系统功能设计 (4)2.1总体设计 (4)基本功能 (4)2.2系统实现 (4)五、实现结构流程图 (5)六、整体实现的逻辑、数据结构 (5)1.客户端的抽象数据类型 (5)1.1FTPClient用户界面 (5)1.2FTPClient控制连接线程 (7)1.3FTPClient数据连接线程 (7)2. 服务器的抽象数据类型 (8)2.1 FTPServer的控制连接线程 (8)2.2FTPServer的数据连接线程 (9)七、具体的一些方法实现 (9)1. FTPClient用户界面 (10)2. FTPClient控制连接 (10)3. FTPClient数据传输 (12)4. FTPServer控制连接 (14)5. FTPServer数据传输 (14)八、测试结果客户端结果 (16)服务端结果 (16)九、课程设计心得 (17)十、参考文献 (18)2一、实验目的文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。
课程设计课程名称计算机网络课程设计题目名称文件传输协议的简单设计与实现学生学院专业班级___ _学号学生姓名______ _________指导教师______ _____2010 年 1 月 5 日设计摘要关键词:SOCKET编程,FTPclient/server程序摘要:本课程设计包含了文件传输协议的简单设计与实现。
文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。
文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序和服务器程序(),实现下述命令功能:get , put, pwd, dir, cd, ?, quit 等,利用了已有网络环境设计并实现简单应用层协议。
本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。
目录1、文件传输协议的简单设计与实现------------------------------181. 1 具体设计任务----------------------------------------------18基本思路及所涉及的相关理论--------------------------------181.2.1基本思路-------------------------------------------------182.2.2 相关理论--------------------------------------------18设计流程图------------------------------------------------19实验运行情况----------------------------------------------19核心程序--------------------------------------------------222.5.1 服务器(sever)程序---------------------------------222.5.2 客户(client)程序----------------------------------29心得体会-----------------------------------------------------------------------------37参考文献--------------------------------------------------------382、文件传输协议的简单设计与实现2. 1 具体设计任务计算机网络实验环境建立在TCP/IP 网络体系结构之上。
各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。
实验室各计算机具备Windows环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。
本实验要求利用这些功能,设计和实现一个简单的文件传送协议。
用socket 编程接口编写两个程序,分别为客户程序和服务器程序(),该程序应能实现下述命令功能:get:取远方的一个文件put:传给远方一个文件pwd:显示远主当前目录dir:列出远方当前目录cd :改变远方当前目录?:显示你提供的命令quit :退出返回基本思路及所涉及的相关理论2.2.1基本思路设计程序使客户端连接的时候,服务器将会向客户端发回一条消息告知它的IP地址,然后关闭连接并继续接收端口的连接。
建立各个命令功能对应的函数,发送请求,等待服务器端的服务。
服务器端初始化WinSock,创建SOCKET,获取主机信息,并对客户端进行会话,发送回复讯息给客户端,响应完毕后关闭连接,释放WinSock。
2.2.2 相关理论文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。
计算机网络实验环境建立在TCP/IP 网络体系结构之上。
各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。
实验室各计算机具备Windows 环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。
本设计利用这些功能,设计和实现一个简单的文件传送协议。
用socket 编程接口编写两个程序,分别为客户程序和服务器程序()。
设计流程图实验运行情况服务器端运行,默认自动启动监听,情况如下图:服务如果关闭监听,效果如下图:客服端运行,如下图:输入服务器端的IP和端口号进行连接,效果如图:下面设置文件保存位置,如图:下面演示上传一个视频文件,然后再下载下来,其中上传过程的进度信息:上传完成后的效果图:下载文件的进度提示信息:下载完成后,指定目录下就有了该文件了:核心程序2.5.1 服务器(server)程序如下using System;using ;using ;using ;using ;using ;using TCP文件传输_服务器{class WorkThread{byte[] buffer;int bufferSize= 4096;Thread mythread;Socket handler;public WorkThread(Socket workSocket){handler = workSocket;buffer = new byte[bufferSize];mythread = new Thread(BeginCommunication);}public void Start(){();}public void Abort(){();}private void BeginCommunication(){while (true)GetString(buffer, 0, reCount);if (0, 4) == "name")Substring(5, - 5);SendFile(fileName, handler);}else if (0, 4) == "boot");}}oString();= strIPAddr;hostIPAddress = (strIPAddr);Server = new IPEndPoint(hostIPAddress,);sock = new Socket,, ;(Server);(10);string str = "正在监听端口 " + + "...";= "状态:" + str;AcceptTh = new Thread(ThAccept);();.";= "状态:" + str;AcceptTh = new Thread(ThAccept);();}private void btn_stop_Click(object sender, EventArgs e){= true;= false;try{;}catch { }();= "状态:已停止监听";}2.5.2 客户(client)程序;();if == true){;();();= false;}}}private void Upload(){try{string shortFileName = ('\\') + 1, - ('\\') - 1);string serverFileName = + "\\" + shortFileName;;;();();= false;}}public string GetFileName(string fileName){return ('\\')+1, - ('\\')-1);}public string GetFileType(string fileName){return ('.'), - ('.'));}}};if == true){;();}}}ubItems[1].Text;if ( size!= "")electedItems[0].SubItems[0].Text);ubItems[0].Text;string[] listArray = GetDtListArray(downPath, true);Queue<downloadItem> tempQueue = GetDownFileQueue(listArray);while>0){());}}}}(0,StaticValue.("\\"));curServerPath, false));}}else{string s =[0].SubItems[1].Text;if (s == ""){=StaticValue.curServerPath + "\\" + listView1.SelectedItems[0].SubItems[0].Text;京:清华大学出版社,【2】谭浩强编着 C++程序设计.北京:清华大学出版社,2004,6【3】谭浩强编着 C程序设计.北京:清华大学出版社,2005,7【4】王洪涛编着深入剖析Visual C++.北京:人民邮电出版社,2003,3【5】陈良伦编着网络工程概论.北京:机械工业出版社,2007,4。