基于socket的文件传输软件的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨工业大学课程结业报告
姓名:学
陈琳
09S003158
计算机科学与技术网络程序设计
2009-12-20
目录
1.基于TCP/IP及UDP的通信传输概述 (2)
2.系统体系结构 (4)
2.1面向TCP连接系统调用过程 (5)
2.2面向UDP连接系统调用过程 (6)
3.系统要求与功能实现 (6)
3.1公共类设计 (6)
3.1.1 IP地址操作类 (6)
3.1.2 DNS相关类 (7)
3.2 TCP文件传输 (8)
3.2.1 服务器端 (8)
3.2.2 客户端 (9)
3.3 UDP文件传输 (10)
3.3.1 服务器端 (11)
3.3.2 客户端 (12)
3.4线程池 (12)
3.5其它 (13)
4.试验结果 (13)
5.思考 (15)
6.结论和收获 (16)
基于socket套接字的文件传输软件的设计与实现1.概述
TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet 最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP 协议和传输层的TCP协议组成的。TCP/IP协议使用范围极广,是目前异种网络通信使用的唯一协议体系,适用于连接多种机型,既可用于局域网,又可用于广域网,许多厂商的计算机操作系统和网络操作系统产品都采用或含有TCP/IP协议。TCP/IP协议已成为目前事实上的国际标准和工业标准。基于TCP/IP协议组的网络模型分为应用层、传输层、网络层、链路层和物理层这样五个层次。TCP/IP 协议组位于应用程序和硬件之间,指挥数据在网络各层中传递。其中传输层的协议包括传输控制协议(TCP)和用户数据报协议(UDP) ,它们都建立在IP协议的基础上,其中TCP提供可靠的面向连接服务,UDP提供简单的无连接服务。传输层提供端到端,即应用程序之间的通信,主要功能是数据格式化、数据确认和丢失重传等。TCP协议是面向连接的协议,它提供可靠的字节流服务,在进行数据传输之前必须先建立连接,经三次握手确定后才开始数据传送。UDP进行数据报传输使用的是不可靠、无连接的协议。网络层包括互连网协议 IP,互连网控制报文协议 ICMP和互连网组管理协议IGMP。其中IP协议完成大部分的工作,负责数据传输和路由的选择等。I P报头中的地址和网卡相联系( 具体还涉及地址解析和反向地址解析协议),TCP 、UDP报头中的端口号侧对应着网络主机上不同的程序。TCP/IP体系结构如图一所示:
图一 TCP/IP体系结构
Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。尽管TCP/IP协议的名称中只有TCP这个协议名,但是在TCP/IP的传输层同时存在TCP和UDP两个协议。
TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket 连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
本文在Scoket原理基础上,基于.NET平台,利用线程池技术,设计并实现了分别面向TCP和UDP的可靠文件传输软件。
2.系统体系结构
根据采用的协议不同,本软件分为基于TCP文件传输和基于UDP的可靠文件传输。在TCP/IP网络中两个进程间的相互作用的主机模式是C/S。在操作过程中采取的是主动请示方式:
首先服务器方要先启动,并根据请示提供相应服务:
1、打开一通信通道并告知本地主机,它在某一个公认地址上接收客户请求;
2、等待客户请求到达该端口;
3、接收到重复服务请求,处理该请求并发送应答信号;
4、返回第2步,等待另一客户请求;
5、关闭服务器。
客户端:
1、打开一通信通道,并连接到服务器所在主机的特定端口;
2、向服务器发送服务请求报文,等待并接收应答;继续提出请求……
3、请求结束后关闭通信通道并终止。
图二面向TCP的系统时序图
图三面向UDP的系统时序图
3.功能实现
3.1公共类设计
软件设计时,TCP和UDP的服务器端为统一界面,客户端为统一界面。即服务器端既能够接受TCP连接,也能通过UDP进行接收;客户端可以通过TCP和UDP进行传输。
3.1.1 IP地址操作类
1、IPAddress类
在该类中有一个Parse()方法,可以把点分的十进制IP表示转化IPAddress 类,方法如下:
IPAddress address = IPAddress.Parse(“192.168.100.39”);
IPAddress提供4个只读字段
Any 用于代表本地系统可用的任何IP地址
Broadcase 用于代表本地网络的IP广播地址