搜档网
当前位置:搜档网 › C#利用TCP实现文件传输

C#利用TCP实现文件传输

C#利用TCP实现文件传输
C#利用TCP实现文件传输

//服务器端程序

using System.IO;

using https://www.sodocs.net/doc/459304732.html,.Sockets;

using https://www.sodocs.net/doc/459304732.html,;

namespace PictureServer

{

class Program

{

static void Main(string[] args)

{

//在本机创建一个TcpListener,端口是8888,

TcpListener listener = new TcpListener(IPAddress.Any, 8888);

//开始监听,

listener.Start();

//循环,等待客户端连接

while (true)

{

const int bufferSize = 256;

//接受客户端的连接,利用client保存连接的客户端

TcpClient client = listener.AcceptTcpClient();

//获取客户端的流stream

NetworkStream clientStream = client.GetStream();

byte[] buffer = new byte[bufferSize];

int readBytes = 0;

//将客户端流读入到buffer中

readBytes = clientStream.Read(buffer, 0, bufferSize);

//将从客户端流读取的数据保存到字符串request中

string request = Encoding.ASCII.GetString(buffer).Substring(0, readBytes);

//如果客户端的命令以LIST开头,

if (request.StartsWith("LIST"))

{

// LIST request - return list

//利用类PictureHelper的函数GetFileListBytes,获取图片文件列表

byte[] responseBuffer = PictureHelper.GetFileListBytes();

//将服务器获取的图片文件列表写入到clientStream中

clientStream.Write(responseBuffer, 0, responseBuffer.Length);

}

//如果客户端的请求命令以FILE开头,即获取单个图片文件

else if (request.StartsWith("FILE"))

{

// FILE request - return file

// get the filename

//获取请求的文件名字

string[] requestMessage = request.Split(':');

string filename = requestMessage[1];

//利用File.ReadAllBytes函数将文件里面的文件filename读入到字节数组data中,

byte[] data = File.ReadAllBytes(https://www.sodocs.net/doc/459304732.html,bine(@"C:Documents and SettingsAdministratorMy DocumentsMy Pictures", filename));

// Send the picture to the client.

//将data中的文件内容写入到客户端clientStream中,传回客户端

clientStream.Write(data, 0, data.Length);

}

//关闭客户端流

clientStream.Close();

}

}

//静态类PictureHelper,

public static class PictureHelper

{

//提供文件夹中的文件列表

public static string[] GetFileList()

{

string[] files = Directory.GetFiles(@"C:Documents and SettingsAdministratorMy DocumentsMy Pictures");

//去掉文件夹路径,只保留文件名

// Remove the directory path from the filename.

for (int i = 0; i < files.Length; i++)

{

files[i] = Path.GetFileName(files[i]);

}

return files;

}

//将文件filename的内容读到字节数组中

public static byte[] GetPictureBytes(string filename)

{

FileInfo fileInfo = new FileInfo(filename);

byte[] buffer = new byte[fileInfo.Length];

using (FileStream stream = fileInfo.OpenRead())

{

stream.Read(buffer, 0, buffer.Length);

}

return buffer;

}

public static byte[] GetFileListBytes()

{

// LIST request - return list

string[] files = PictureHelper.GetFileList();

StringBuilder responseMessage = new StringBuilder();

foreach (string s in files)

{

responseMessage.Append(s);

responseMessage.Append(":");

}

byte[] responseBuffer = Encoding.ASCII.GetBytes(

responseMessage.ToString());

return responseBuffer;

}

}

}

}

//////客户端程序

using https://www.sodocs.net/doc/459304732.html,;

using https://www.sodocs.net/doc/459304732.html,.Sockets;

using System.IO;

private void buttonListPictures_Click(object sender, EventArgs e)

{

const int bufferSize = 4096;

// Connect to the server.

//生成一个TcpClinet

TcpClient client = new TcpClient();

//生成服务器的IPHostEntry,因为我的服务器和客户端在同一台计算机上,所以此处用localhost,实际

应用中,此处的localhost应用用服务器的ip地址代替,

IPHostEntry host = Dns.GetHostEntry("localhost");

// 连接到服务器的8888端口

client.Connect(host.AddressList[0],8888);

// Send a request to the server.

//创建一个NetworkStream,

NetworkStream clientStream = client.GetStream();

//request是"LIST"

string request = "LIST";

//将request放入到字节数组requestBuffer中

byte[] requestBuffer = Encoding.ASCII.GetBytes(request);

//将请求写入到NetworkStream中,发送到服务器端

clientStream.Write(requestBuffer, 0, requestBuffer.Length);

//获取服务器端的回应

// Read the response from the server.

byte[] responseBuffer = new byte[bufferSize];

//生成一个内存流memstream

MemoryStream memStream = new MemoryStream();

int bytesRead = 0;

do

{

//将网络流中的数据按256字节一组的顺序写入到memStream中

bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);

memStream.Write(responseBuffer, 0, bytesRead);

} while (bytesRead > 0);

clientStream.Close();

client.Close();

//从内存流读取数据

byte[] buffer = memStream.GetBuffer();

string response = Encoding.ASCII.GetString(buffer);

//将服务器返回的文件列表分解开,文件名保存到字符串数组fileName中string[] fileNames = response.Split(':');

//将字符串数组填到ListBox中

this.listFiles.DataSource = fileNames;

}

//获取单个图片文件,并显示之

private void buttonGetPicture_Click(object sender, EventArgs e)

{

const int bufferSize = 4096;

TcpClient client = new TcpClient();

IPHostEntry host = Dns.GetHostEntry("localhost");

client.Connect(host.AddressList[0],8888);

NetworkStream clientStream = client.GetStream();

try

{

//生成请求,以FIlE:开头,后接在listbox中选择的文件名

string request = "FILE:" + this.listFiles.SelectedItem.ToString();

byte[] requestBuffer = Encoding.ASCII.GetBytes(request);

//将请求写入到clientStream中,发送到服务器端

clientStream.Write(requestBuffer, 0, requestBuffer.Length);

byte[] responseBuffer = new byte[bufferSize];

MemoryStream memStream = new MemoryStream();

int bytesRead = 0;

do

{

//获取服务器端的回应,

bytesRead = clientStream.Read(responseBuffer, 0, bufferSize); //服务器的回应写入到memStream

memStream.Write(responseBuffer, 0, bytesRead);

} while (bytesRead > 0);

clientStream.Close();

client.Close();

//从内存流中读取图片文件数据,显示在picturebox控件上

pictureBox.Image = Image.FromStream(memStream);

}

catch (Exception exce)

{

MessageBox.Show(exce.Message);

}

}

文件传输系统的设计与实现.

JISHOU UNIVERSITY 专业课课程论文 文件传输系统的设计与实现题目: 作者: 学号: 所属学院:信息科学与工程学院 专业年级:计算机科学与技术 总评分: 完成时间:

文件传输系统的设计与实现 摘要 互联网的一大特点是实现信息共享,文件传输是信息共享的十分重要的内容之一。随之出现了许多FTP服务器来共享一些信息资源,编写一个操作简单,方便的FTP客户端来下载这些资源受到了人们的极大的欢迎。 FTP是一种用于在网上传输文件的协议,从原理上说,FTP是一个客户/服务器模式的应用协议。它用两个连接来实现:一个是控制连接,用来连接服务器和实现文件操作;一个是数据连接,用来实现数据传输。FTP的实现核心是命令/应答模式,FTP客户端将用户的所有FTP相关请求都转化为FTP服务器可识别的命令,然后发送到服务器,并接收和处理执行完毕后服务器传回的应答。 本程序是一个小型FTP服务器系统,实现了FTP服务器所应该具备的大多数功能,包括用户的登录,文件的上传、下载、删除,选择数据传输模式、目录选择等,并给出相应的提示。通过该程序的开发,基本上实现了一个FTP服务器所应该具有的功能,能够解释一般的FTP命令,并且符合RFC59规范。 本程序采用VC++6.0作为开发工具,设计步骤采用自顶向下的方法。 关键词:客户端;服务器;下载;上传;FTP

目录 第一章引言 (1) 1.1课题背景及意义 (1) 1.2课题研究现状 (1) 1.3研究内容 (2) 第二章FTP协议与原理 (3) 2.1 FTP简介 (3) 2.2 FTP的工作原理 (3) 2.3 FTP运行原理 (4) 2.4 FTP文件传输连接类型 (4) 第三章开发环境及工具介绍 (6) 3.1 C语言概述 (6) 3.2 VC++介绍 (6) 3.3 VC++6.0集成环境介绍 (6) 第四章FTP服务器需求分析 (8) 4.1 FTP文件传输的需求 (8) 4.2应解决的问题 (9) 4.3功能分析 (9) 第五章系统设计与实现 (10) 5.1功能要求 (10) 5.2开发工具 (10) 5.3主要功能与实现 (11) 5.4 菜单栏功能模块 (11) 5.5 查看功能模块 (13) 第六章系统测试 (18) 6.1系统可能出现的问题与不足 (18) 6.2 采用的测试类型 (18) 6.3 测试的过程与结果分析 (18) 总结 (20) 参考文献 (21)

TCP数据包的发送和接收设计报告

湖北工业大学 课程设计报告 设计题目:TCP数据包的发送和接收专业:计算机科学与技术 班级:10计科2班 学号:11 姓名:吕红杰 指导老师:涂军

一.设计题目 发送和接收TCP数据包 二.设计要求 1.正确理解题意; 2.具有良好的编程规范和适当的注释; 3.有详细的文档,文档中应包括设计题目涉及的基础知识、设计思路、程序流程图、程序清单、开发中遇到的问题及解决方法、设计中待解决的问题及改进方向。 三.需求分析 TCP是一种面向连接的、可靠的传输层协议。TCP协议工作在网络层IP协议的基础上。本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个TCP数据包,发送给目的主机,并在目的主机接收此TCP数据包,将数据字段显示显示在标准输出上。 四.具体设计 1.创建一个原始套接字,并设置IP头选项 SOCKET sock; sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP); 或者: sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPE D); 这里,设置了SOCK_RAW标志,表示我们声明的是一个原始套接字类型。 为使用发送接收超时设置,必须将标志位置位置为WSA_FLAG_OVERLAPPED。在本课程设计中,发送TCP包时隐藏了自己的IP地址,因此我们要自己填充IP头,

设置IP头操作选项。其中flag设置为ture,并设定 IP_HDRINCL 选项,表明自己来构造IP头。 setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&Flag, sizeof(Flag)); int timeout=1000; setsockopt(sock, SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout, sizeof(timeout)); 在这里我们使用基本套接字SOL_SOCKET,设置SO_SNDTIMEO表示使用发送超时设置,超时时间设置为1000ms。 2.构造IP头和TCP头 这里, IP头和TCP头以及TCP伪部的构造请参考下面它们的数据结构。typedef struct _iphdr 算校验和的子函数 在填充数据包的过程中,需要调用计算校验和的函数checksum两次,分别用于校验IP头和TCP头部(加上伪头部),其实现代码如下: USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size ) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16);

TCP论文文件传输论文

TCP论文文件传输论文 摘要:本文介绍了在linux下基于tcp协议的文件的传输系统的流程与设计。在传输的过程中,服务器(server)上使用了线程池技术实现了多线程的设计,并使用openssl 对所传输文件数据进行加解密,以保证文件传输过程中安全性的需求。 关键词:tcp;文件传输;线程池;openssl tcp-based secure file transmission system design and research liu xianqiang,lin hui,huang chengmao (school of optoelectronic information,university of electronic science&technology,chengdu610054,china) abstract:this article describes the file transmission system processes and design,base on tcp protocol in linux.in the transmission process,the server uses the thread pool technology to achieve the multi-threaded design,and using openssl library to ensure security of the data encryption during file tarnsmission. keywords:tcp;file transmission;thread

基于TCP协议的简单即时通信软件的设计与实现

基于TCP协议的网络通信系统的设计与实现 摘要:网络通信,由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。使信息能够在INTERNET上可靠的传输。 本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。 关键词:即时通信;文件传输;套接字;TCP协议 Abstract :Instant messages have several advantages such as real-time, cross-platform, cheap and efficient. To design a Multi-user IM (instant message) architecture is very i mportant in both theory and realism. Instant message based on TCP/IP protocol that is realized by socket interface. Almost all UNIX operation systems and Microsoft's win dows operation systems provide support of socket in the kernel. Using the uniform int erface, we can develop a portable program of TCP/IP, which help us transfer informati on in Internet safely and credibly. The system uses the client/server(C/S) mode. The server takes the responsibility of th e login message of client, the saving of friend message and Message heartbeat. The tra nsmission of the basic messages of the customer end will be designed on P2P architec ture. This thesis explains how the client and server communicate via serializing XML message. Key words: Instant Message; File Transfer; Socket; TCP protocol

基于tcp协议通信系统的设计与实现

基于TCP协议通信系统的设计与实现 杨秀森 (贵州师范大学机电学院电气工程及其自动化学号:0914********) 摘要:通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP通信程序。 本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。 关键词:TCP协议;通信协议系统;套接字;文件传输;C/S模式; The System Design and Implementation of Based on TCP Protocol Communication Yang Xiu Sen (Guizhou Normal University Institute of mechanical and electrical engineering and its automation number: 0914********) Abstract: Communication protocol ( communications protocol ) refers to both entities to complete communication or service must follow the rules and conventions. The protocol defines a data unit format, information unit should contain information and meaning, connection mode, information transmission and reception timing, thereby ensuring that the network data smoothly transmitted to determine places. Communication communication is through the SOCKET socket interface implementation. The current mainstream UNIX system and Microsoft WINDOWS system in the kernel provides to SOCKET interface support. Using the unified interface, can be prepared in a transplantable TCP communication program. This paper designed and implemented based on a simple LAN instant communication system, the system adopts C/S model, the underlying communication through the SOCKET socket interface

发送TCP数据包设计说明书

发送TCP数据包设 计说明书 一课程设计准备 1.1课程设计目的 TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。TCP协议在网络层IP协议的基础上,向应用层用户进程提供可靠的、全双工的数据传输流。本课程设计的目的就是设计一个发送TCP数据包的程序,并根据本设计说明TCP数据包的结构以及TCP协议与IP协议的关系,使学生对TCP 协议的工作原理有更深入的认识。 1.2课程设计的要求 本程序的功能是填充一个TCP数据包,并发送给目的主机。 1)以命令行形式运行:SendTCP sourse_ip sourse_port dest_ip dest_port 其中,SendTCP为程序名;sourse_ip为源端IP地址;sourse_port为源埠;dest_ip为目的IP地址;dest_port为目的埠。 2)其它的TCP头部参数请自行设定。 3)数据字段为“This is my homework of network,I am happy!”。 4)发送成功后在屏幕上输出”send OK”。

1.3相关知识 编制本程序前要对TCP协议有一定的了解。当应用程序有报文需要通过TCP发送时,它就将此应用层报文传送给执行TCP协议的传输实体。TCP传输实体将用户数据加上TCP报头,形成TCP数据包,在TCP数据包上增加IP头部,形成IP包。下图显示的是TCP数据包和IP包的关系。 TCP协议的传输单元为报文段,其格式如图所示。报文段报头的长度为20B~60B。其中固定长度为20B,报文段长度最多为40B。TCP报文段主要包括以下字段。 ·埠号:埠号字段包括源埠号和目的埠号。每个埠号的长度是16位,分别表示发送该TCP包的应用进程的埠号和接收该TCP包的应用进程的埠号。·序号:长度为32位。由于TCP协议是面向数据流的,它所传送的报文段可以视为连续的数据流,因此需要给每一个字节编号。序号字段的“序号”指的是本报文段数据的第一个字节的顺序号。 ·确认号:该字段的长度为32位,它表示接收端希望接收的下一个TCP 包的第一个字节的序号。

TCP文件传输程序的设计书

TCP文件传输程序设计书 一、实验名称:TCP文件传输程序 二、实验要求 1、设计一个应用程序,该应用程序能够实现网络中两台计算机之间传输文件。 2、一个程序既能够建立服务器又能够以终端的形式连接服务器。 3、终端或者服务器既能够发送文件又能够接收文件。 4、传送文件类型应为任何类型,文件大小为任意。 三、总体规划 1、网络传输协议的选择 在TCP/IP协议栈中,有两个高级协议是我们网络应用程序编写者应该了解的,它们"传输控制协议"(Transmission Control Protocol,简称TCP)和"用户数据报协议"(User Datagrm Protocol,简称UDP)。 TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无错的数据传输。应用程序利用TCP进行通信时,源和目标之间会建立一个虚拟连接。这个连接一但建立,两台计算机之间就可以把数据当作一个双向字节流进行交换。 UDP是无连接通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。简单地说,如果一个主机向另外一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已准备接收数据。如果另外一台主机收到了数据,它不会确认收到与否。 为了使两台计算机之间传输的文件数据不会丢失或发生错误,应该采用TCP协议。 2、TCP协议在VC++中的实现 在VC++中,网络协议的实现有以下几种方式: a、采用WinSocket API函数。 API函数中提供了基本Socket的系统调用,具体实现方法为服务器端首先要调用socket()函数建立一个流式套接字,用bind()函数与本机的一个端口建立关联,继续调用listen()函数将套接字置于被动的侦听方式以监听连接,然后调用accept()函数进入等待状态之后才可以接收来自客户端的请求,一旦接收到客户端通过connect发出的连接请求,accept将返回一个新的套接字描述符。通过此套接字描述符调用send()或recv()函数即可与客户端进行数据收发。待数据传送完成,服务器客户端调用closesocket()关闭套接字。 该方法在编程过程中需要注意socket连接的整个过程,编程工作量大,编程效率低,单却可以加深对网络协议的认识。 程序流程示意图如下:

P2P文件传输平台的设计与实现

《计算机网络程序设计》课程设计报告 题目:P2P文件传输平台的设计与实现 学院:计算机科学与工程学院 专业:信息管理与信息系统 学生姓名: 学号: 指导教师: 2011年3月24日

目录 1.前言 (3) 2.需求分析 (3) 3.概要设计 (3) 3.1硬件环境 (3) 3.2软件环境 (3) 4.详细设计 (4) 5.测试 (6) 6.总结 (6) 参考文献 (6) 附录 (7)

1.前言 近年来,P2P(Peer-to-Peer,对等互联或点对点技术)作为因特网通信应用中一项新兴技术,他的发展迅速。基于P2P方式实现的软件,已经广泛应用于资源的下载、游戏的互动、交互式媒体播放、分布式计算等多种领域,并在越来越多的领域展现了巨大的应用潜力。 但是,到目前为止,仍然没有针对P2P的统一的网络应用开发标准,其体系结构仍在不断地推陈出新。微软公司在.NET Framework 3.5中新增了https://www.sodocs.net/doc/459304732.html,.PeerToPeer命名空间,该命名空间下提供的类简化了利用P2P开发应用程序的难度,为创建P2P应用程序提供了简单的实现方法和途径。 在P2P技术尚未风行之前,很多企业级应用采用C/S 或者B/S架构。 在传统的C/S架构的应用程序中,客户端与服务器有明确的分界。客户端软件向服务器发出请求,服务器存放共享资源并对客户端请求作出响应。 P2P的特点: 相对于C/S架构来说,P2P具有以下的特点。 (1)对等模式。P2P系统中的使用者能同时扮演客户端和服务器的角 色,使两台计算机之间能不通过服务器直接进行信息分享。 (2)分布式网络数据存储结构。P2P技术的另一个重要的特点在于 “分散”。网络中所有的计算、存储和网络连接能能力都分 布在非集中式网络的“对等伙伴”上。例如,在C/S架构中, 所有客户端都是直接从服务器下载所有资源。而P2P则改变 了以服务器为中心的状态,玫瑰节点可以先从服务器上各下 载一部分,然后再互相从对方或者其他节点下载其他部分。 采用这种方式,大量客户端同时下载时,不但不会形成服务 器网络宽带瓶颈,造成网络堵塞,反而提高了下载速度。当 然P2P也存在一些缺点。在许多流行的P2P应用中,都或多 或少涉及隐私安全以及版权等问题。 【关键字】P2P,文件传输,.net framwork 2.需求分析 本系统采用基于Socket的局域网通信工具的设计与实现的方法,基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快递的通信机制,它的实现无需对企业原有的局域网进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好解决企业内部局域网的各种通信需求。 基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信,教学,讨论应用中有很好的实用价值。它具有信息收发速度快,保密性好,占用网络宽带资源低,占用服务器吞吐能力低,易于编程实现等优点。 聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。首先来看 1.下服务器端的任务:

基于局域网的文件传输系统的设计与实现

基于局域网的文件传输系统的设计与实现 摘要 随着互联网技术的迅猛发展,计算机通信给人类文明带来了翻天覆地的变化。很多情况下,人们的日常工作需要借助文件传输来完成。但大多数文件传输功能都需要借助移动磁盘等硬件设备或Internet上的服务器才能实现。这就给那些具有大规模内部网络的用户造成了许多问题,如浪费资金、浪费网络资源、病毒入侵、降低了工作效率等。为了方便局域网内主机的资源共享,需要开发一个基于局域网的文件传输工具,在内部网络中实现文件交换。 基于局域网的文件传输系统的设计选用Delphi 为开发工具,以C/S模式通过建立Socket连接后实现局域网快速,准确,安全的点对点文件以及文件夹传输功能。本系统能够促进局域网内用户之间的文件资源共享,满足主机之间信息交流,确保文件及文件夹传输安全性,有效地提高工作效率。 设计共分为五大模块,分别为:一、介绍选题背景及意义和国内外研究现状; 二、介绍TCP/IP点对点协议技术,C/S架构的Delphi程序设计技术和Socket网络编程技术;三、对当前局域网文件传输进行需求分析并提出解决方案;四、根据解决方案对系统进行设计;五、对基于局域网的文件传输系统进行测试并得到测试结果。 关键词:C/S结构;网络通讯组件;点对点;Socket连接

The Design and Implementation of File Transfer System Based on LAN Abstract Along with the Internet technology swift and violent development, the computer correspondence the human culture has brought the earth-shaking change for. In very many situations, people's routine work needs to draw support from the file transfer to complete. But the majority file transfer function all needs to draw support moves hardware equipment or the Internet and so in the floppy disk server can realize This gave these to have the large-scale internal network user to create many problems, like the waste fund, the waste network resources, the viral invasion, reduced the working efficiency and so on. In order to facilitate in the local area network main engine resources sharing, needs to develop one based on the local area network file transfer tool, realizes the document exchange in internal network. The design and implementation of file transfer system base on LAN uses Delphi development tool,C/S mode through the establishment of Socket after connecting LAN users fast, accurate, the point-to-point security files and folders transmission functions. The system can contribute to LAN users to share file resources to meet the exchange of information between mainframe, ensure that the filets and folders transmission security, effectively improving efficiency. The design is divided into five major module altogether, including: First, introduction selected topic background and significance and domestic and foreign research present situation; Second, introduces the TCP/IP point to point protocol technology, C/S overhead construction Delphi programming technique and the Socket network programming technology; Third, carries on the demand to the current local area network file transfer to analyze and to propose the solution; Fourth, carries on the design according to the solution to the system; Fifth, to carries on based on the local area network file transfer system tests and obtains the test result. Key words:C/S structure; Network communication module; Point-to-point; Socket connection.

基于TCP的文件传输程序

《计算机网络系统实践》报告 设计题目:网络文件传输 学生姓名:郑波 学号:44 专业班级:计算机科学与技术13-2班 2015年12月

一、设计要求 1、实现单线程文件传输功能 2、在以上的基础上,掌握多线程技术,在文件网络传输时,可选择单 线程或多线程 3、加入异常控制机制,增强程序的鲁棒性(Robust) 4、了解如何提高套接字传输的速率,以及如何加强传输的稳定性 二、开发环境与工具 Windows7下Microsoft Visual Stuio 三、设计原理 1、网络传输协议 TCP/IP协议栈中的两个协议: TCP(Transmission Control Protocol):传输控制协议 UDP(User Datagrm Protocal):用户数据报协议 TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无错的数据传输。应用程序利用TCP进行通信时,源和目标之间会建立一个虚 拟连接。该连接一旦建立,两台计算机之间就可以把数据当做一个双向 字节流进行交换。 UDP是无连接的通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接受发自若干个源的数据。就是说,如果一个主机 向另外一台主机发送数据,这个数据就会立即发出,而不管另外一台主 机是否已准备接收数据。如果另外一台主机接收到了数据,它不会确认 收到与否。 本次工程目的是传输文件,显然需要用TCP建立连接,而TCP连接需要“三次握手”。 2、三次握手 三次握手具体过程: 1、客户端主动与服务器联系,TCP首部控制位中的SYN设置为1,发送

带有SYN的TCP段,并把初始序号告诉对方 2、服务端收到带有SYN的报文,记录客户端的初始序号,选择自己的初 始序号,设置控制位中的SYN和ACK。因为SYN占用一个序号,所以 确认序号设置为客户端的初始序号加1,对客户端的SYN进行确认 3、服务端的报文到达客户端,客户端设置ACK控制位,并把确认好设为 服务器的初始序号加1,以确认服务器的SYN报文段,这个报文只是 确认消息,告诉服务器已经成功建立了连接 四、系统功能描述及软件模块划分 1、系统功能描述 软件实现了点对点的文件传输。传输前的接收提醒以及传输过程中的控制。 2、软件模块划分 本程序可以划分成以上三个模块:传输控制模块,文件传输模块和服务连接模块。其中: 服务连接模块用来建立客户端到服务器的连接 文件传输模块主要用两个线程:_SendThread和_ListenThread来完成,实现发送和接收文件的功能。 传输控制模块主要通过封装好的可串行化信息类CMessage互相传递两端的文件操作消息,响应“暂停传输”,“关闭连接”等功能 五、设计步骤 1、服务连接模块 先要建立起客户端与服务器之间的连接,大致过程如下: ①服务器启动: if(m_nServerType == SERVER) { |*.*||",this); "另存为"); strcpy if()==IDOK){ if(m_bIsWait==FALSE){ MessageBox(_T("对方已经取消文件发送"), _T("警告"), MB_ICONEXCLAMATION); return ; } m_bIsClient=FALSE; m_strPath=();

基于socket的文件传输软件的设计与实现

哈尔滨工业大学课程结业报告 姓名:学 陈琳 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体系结构如图一所示:

(完整word版)基于TCP的文件传输实验报告

综合课程设计报告 基于TCP协议的文件传输系统 学生姓名: 指导教师: 所在系: 所学专业: 年级: 2011年6月

目录 摘要 (2) 1、实验的相关知识 (3) 、通信的模式 (3) 、传输的可靠性 (3) 1.、TCP/IP的网络体系结构 (3) 、TCP/IP网络协议 (4) .3、TCP——传输控制协议 (4) 2、winsock控件 (5) 2.1.1、winsock的重要属性、方法和事件 (5) 2.1.2、winsock控件通信的工作原理 (7) 3、程序设计与实现 (8) 、程序设计 (8) 3.1.1、总体设计 (8) 3.1.2、模块设计 (9) 、程序实现 (10) 3.2.1、工作原理 (10) 3.2.2、服务器端主程序 (11) 3.2.3、客户端主程序 (14) 4、实验总结 (17) 参考文献...............................................................17. 成绩评定 (18)

基于TCP协议的文件传输系统 摘要 随着网络的普及,网络编程显得尤其重要。本实验使用Winsock控件实现两台计算机间的文件传输,描述了Winsock控件的使用方法及有关文件传输的算法。 随着计算机网络的迅速发展,人们的生活越来越离不开网络,如今网络编程已成为计算机发展的热点,而在众多的网络通信中,又以TCP/IP协议最为流行。本文讨论的Winsock控件,提供了访问TCP/IP网络的捷径,使用它可以不必了解TCP/IP的细节和调用Winsock API,只要设置好相应的属性和触发事件后的处理,就可以实现计算机之间的数据通信,进行文件传输了。同时为了便于传输文件过程中的中断现象,在实验时应该充分考虑断点续传问题,即中断文件传输后已经传输的文件不丢失,等到再传时,能继续接着传送。 关键词:TCP/IP协议,Winsock控件,网络编程,文件传输,断点续传。

基于TCP的CS模式程序设计

哈尔滨理工大学 课程设计 题目:基于TCP的CS模式程序设计 院系:计算机科学与技术学院网络工程系班级:网络11-2班 学号: 姓名: 同组成员: 指导教师: 成绩: 2014年06月27日

一.系统设计的目标 1.1选题目的和意义 在Windows操作系统下,使用Socket编程实现两个进程之间的通信,两个进程间使用TCP建立可靠连接,熟悉TCP协议以及套接字编程原理;两个进程间使用C/S工作模式,在此结合并发服务器原理,实现服务器同时与多进程之间进行通信,深入了解C/S工作模式。 TCP是传输层的应用协议,可通过多方面来保证数据传输的可靠性,它采用了停止等待方式来回应数据的接收,只有当接收到数据时,用户才发送数据确认报文,同时此协议使用滑动窗口方法来控制网络拥塞,提高数据传输的可靠性。 基于TCP/IP协议和套接字编程原理为服务器端完成基本数据配置,主要采用套接字编程原理,通过调试运行并且经过完善后,实现并发服务器的功能。在这次课程设计的过程中,对于网络编程有了更深一步的了解。首先是对于计算机网络基础这方面,对于网络体系中的几种分层方法,每层的作用都由了系统的理解,特别是对于Socket编程这一块,套接字的创建、绑定以及使用,基于TCP、UDP的编程以及并发服务器的原理都有了深一步的理解,这次课程设计对于以后进行网络的开发有很大的帮助。 即时通信(Instant Message),由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。使信息能够在INTERNET上可靠的传输。本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。 本课题目标是实现局域网用户之间的即时交流和文件传输,通过基础的网络SOKET编程,为局域网内部的即时通信提供一个简单而较安全的解决方案。 1.2题目开发背景 即时通信是一个终端连往一个即时通信网路的服务。即时通信不同于e-mail 在于它的交谈是实时的。大部分的即时通信服务提供了presence awareness的特性──显示联络人名单,联络人是否在在线与能否与联络人交谈。 最早的即时通信软件是ICQ,ICQ是英文中I seek you的谐音,意思是我找你。四名以色列青年于1996年7月成立Mirabilis公司,并在11月份发布了最初的ICQ版本,在六个月内有85万用户注册使用。

网络文件传输系统的设计与实现

网络文件传输系统的设计与实现 作者 指导老师 摘要:在科学技术飞速发展的今天,Internet已经和人们的日常生活息息相关,无论是工作,学习还是娱乐,都离不开网络。比如有时候需要进行文件的传输,虽然现在的许多网络文件传输工具能基本满足人们对文件传输质量的要求,但是它们往往都存在安全性,工作效率低等问题。 本课程设计的文件传输系统是在Windows操作系统下,Visual C + + 6.0环境下借用WinSock控件实现的,是基于TCP/IP协议的C/S模式,在服务器和客户端分别以socket为中心进行编程,客户端和服务器端的界面分别是由文件发送模块和文件接收模块组成。客户端先调用connect()与服务器建立连接,然后用send()发送数据;服务器端先调用listen()侦听客户端的连接请求,然后调用accept()对连接请求进行响应,如果需要接收数据,则会调用receive()接收。 本文件传输系统成功的实现了服务器和客户端的文件传输,不论是较小范围内的局域网还是远程网,而且还可以传输多种格式的文件,如word,视频,图像等。相比其它文件传输工具而言,本系统有很多的优点。首先,界面简单,易于操作;其次,传输较大的文件时,不需要花费很长时间。 关键词:文件传输;WinSock ; socket编程; C/S结构

目录 1 绪论 (1) 1.1选题背景 (1) 1.2选题意义 (1) 2开发环境及相关技术简介 (2) 2.1开发环境V isual C++ 6.0介绍 (2) 2.2基于vc的socket网络编程的基本原理 (2) 2.2.1 socket的基本概念 (2) 2.2.2Winsock网络编程原理 (3) 2.3 TCP/IP协议简介 (3) 2.5 C/S结构 (4) 2.5.1 C/S结构的概念 (4) 2.5.2 C/S结构的工作模式 (4) 2.5.3 C/S结构的优点 (4) 3 网络文件传输系统的设计 (5) 3.1服务器端和客户端界面介绍 (5) 3.1.1服务器界面介绍 (5) 3.1.2客户端界面介绍 (5) 3.2服务器端,客户端程序分析 (6) 3.2.1服务器端分析 (6) 3.2.2客户端分析 (11) 4实现 (15) 4.1系统运行环境 (15) 4.2文件传输系统的测试 (15) 4.2.1实验一:局域网内文件传输 (15) 4.2.2实验二:远程网络上文件传输 (17) 4.2.3实验三:较大文件的传输 (18) 4.2.4实验四:不同格式文件的传输 (19) 4.3该文件传输系统的不足 (20) 5结论 (20) 致谢 (22) 参考文献 (23)

网络文件传输设计报告

合肥学院 计算机科学与技术系 课程设计报告 2011~2012学年第一学期 课程Java语言程序设计 课程设计名称网络文件传输系统 专业班级08网络工程(1)班 姓名王阳光 指导教师金莹、郭昌建 2011年9月

根据用户需求,本系统可以分为两个子系统:1、局域网内简单文字的聊天子系统,它是在局域网内选择相应的用户,以便对之发送文字信息;2、局域网内文件、文件夹传输系统,它是在源主机端先把需要传输的文件、文件夹转换成相应的数据流进行传输,到了目的主机端再由之进行还原。本系统的文字聊天系统实现的功能类似于QQ用户之间的聊天。在设计系统时,应根据简洁、流畅的特点安排布局,在编制程序时应充分考虑到网络传输的稳定、快捷,真正做到“简洁、高效、流畅、安全”的使用环境。用户使用的过程为:先是用户登录启动本系统,系统自动检索局域网内的其它用户,并添加到自己的用户列表中,供用户选择。当用户需要连接到某个用户时,在用户列表中选中该用户,即可发送消息或者文件、文件夹。接收方可以选择接收或者拒绝接受相应传输的文件或者文件夹。当用户退出本系统前,系统将通知局域网内的其它用户,其它用户在收到用户下线通知后,将会自动删除用户列表中该用户的信息。 二、设计 1.设计思想 1)局域网用户列表的建立。用户主机启动本系统时,使用UDP协议向236.136.25.7这个多播地址发送多播数据包,默认端口是3608。多播数据包内容包含用户名、主机名、IP 地址、登录名、优先级的用户信息;已启动本系统的用户通过3608端口收到此多播数据包后,就会在自己的用户列表中添加这个用户的用户名、IP地址等信息,同时向对方IP发送本机用户的个人信息;从而双方都能建立起用户列表; 2)刷新用户列表时发送的多播数据包和启动的一样,只是在发送数据包前,将本机的用户列表清空,重新建立新的用户列表。 3)传送聊天信息时同样使用UDP协议。由于UDP协议是无连接协议,传输速度快,但是没有确认机制,是不可靠的协议,需要自己定义返回信息的标志来判断对方是否收到信息。 4)用户离线时发送一个离线多播数据包到236.136.25.7,收到此多播包的用户,根据包中的IP地址删除对方的用户列表信息。 5)传送文件和文件夹是使用TCP协议,端口3608。TCP是一种面向连接的服务,在文件传输时会先行建立连接,通过链接提供双向、有序且无重复的数据流服务、以及流量控制、差错检测和纠错等服务,从而确保文件传输的正确性。 2.功能设计 在C/S体系结构下,设计局域网文件传送的网络传输软件。功能包括局域网文件传送和局域网简单文字聊天,可以同时对多个用户发送文件,以及传送文件功能不分目录与文件,

相关主题