计算机网络课程设计报告文件传输协议的简单实现

上传人:1777****777 文档编号:38924970 上传时间:2021-11-09 格式:DOC 页数:24 大小:420.50KB
收藏 版权申诉 举报 下载
计算机网络课程设计报告文件传输协议的简单实现_第1页
第1页 / 共24页
计算机网络课程设计报告文件传输协议的简单实现_第2页
第2页 / 共24页
计算机网络课程设计报告文件传输协议的简单实现_第3页
第3页 / 共24页
资源描述:

《计算机网络课程设计报告文件传输协议的简单实现》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告文件传输协议的简单实现(24页珍藏版)》请在装配图网上搜索。

1、蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁

2、薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅

3、莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀

4、薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆

5、蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁

6、蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅

7、蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁羀莁蚆蚁肃膄薂螀膅荿蒈蝿袅膂莄螈肇莇莀螇腿芀虿螆衿蒆薅螅羁芈蒁螅肃蒄莇袄膆芇蚅袃袅肀薁袂羈芅蒇袁膀肈蒃袀袀莃荿衿羂膆蚈衿肄莂薄袈膇膄蒀羇袆莀莆羆罿膃蚅羅肁莈薀羄芃膁薆羃羃蒆蒂薀肅艿莈蕿膈蒅蚇薈袇芈薃薇罿蒃葿蚇肂芆莅蚆膄聿蚄蚅羄芄蚀蚄肆膇薆蚃膈莂蒂蚂袈膅莈蚁 课 程 设 计 课程名称 计算机网络课程设计 题目名称 文件传输协议的简单设计与实现 学生学院 专业班级_ _ 学 号 学生姓名_ _指导教师_ _ 2010 年 1 月 5 日

8、设计摘要关键词:SOCKET编程,FTPclient/server程序摘要:本课程设计包含了文件传输协议的简单设计与实现。文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),实现下述命令功能:get , put, pwd, dir, cd, ?, quit 等,利用了已有网络环境设计并实现简单

9、应用层协议。本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。目录1、文件传输协议的简单设计与实现-181. 1 具体设计任务-181.2 基本思路及所涉及的相关理论-181.2.1基本思路-182.2.2 相关理论-181.3设计流程图-191.4实验运行情况-191.5 核心程序-22 2.5.1 服务器(sever)程序-22 2.5.2 客户(client)程序-291.6心得体会-37参考文献-382、文件传输协议的简单设计与实现2. 1 具体设计任务计算机网络实验环境建立在TCP/IP 网

10、络体系结构之上。各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。实验室各计算机具备Windows环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。本实验要求利用这些功能,设计和实现一个简单的文件传送协议。用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能:get:取远方的一个文件put:传给远方一个文件pwd:显示远主当前目录dir:列出远方当前目录cd :改变远方当前目录? :显示你提供的命令quit :退出返回2.2基本思路及所涉及的相关理论2.2.1基本思路

11、 设计程序使客户端连接的时候,服务器将会向客户端发回一条消息告知它的IP地址,然后关闭连接并继续接收端口的连接。建立各个命令功能对应的函数,发送请求,等待服务器端的服务。服务器端初始化WinSock,创建SOCKET,获取主机信息,并对客户端进行会话,发送回复讯息给客户端,响应完毕后关闭连接,释放WinSock。2.2.2 相关理论 文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。计算机网络实验环境建立在TCP/IP 网络体系结构之上。各计算机除了安装TCP/IP 软件外,还

12、安装了TCP/IP 开发系统。实验室各计算机具备Windows环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。本设计利用这些功能,设计和实现一个简单的文件传送协议。用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c)。2.3 设计流程图2.4实验运行情况服务器端运行,默认自动启动监听,情况如下图:服务如果关闭监听,效果如下图:客服端运行,如下图:输入服务器端的IP和端口号进行连接,效果如图:下面设置文件保存位置,如图:下面演示上传一个视频文件,然后再下载下来,其中上传过程的进度信息:上传完成后的效果图:下载文件的

13、进度提示信息:下载完成后,指定目录下就有了该文件了:2.5 核心程序2.5.1 服务器(server)程序如下using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Net;using System.Net.Sockets;using System.IO;using System.Windows.Forms;namespace TCP文件传输_服务器 class WorkThread byte buffer; int

14、 bufferSize= 4096; Thread mythread; Socket handler; public WorkThread(Socket workSocket) handler = workSocket; buffer = new bytebufferSize; mythread = new Thread(BeginCommunication); public void Start() mythread.Start(); public void Abort() mythread.Abort(); private void BeginCommunication() while (

15、true)/从客户端接收数据,直到连接断开 try int reCount = handler.Receive(buffer); string insStr =Encoding.BigEndianUnicode.GetString(buffer, 0, reCount); if (insStr.Substring(0, 4) = name)/收到下文件请求 string fileName = insStr.Substring(5, insStr.Length - 5); SendFile(fileName, handler); else if (insStr.Substring(0, 4) =

16、 boot)/收到获取根目录请求 string listStr = GetFileNames(F:, false); SendString(handler, listStr); else if (insStr.Substring(0, 4) = path)/收到获取指定目录内容请求 string path = insStr.Substring(5, insStr.Length - 5); string listStr = GetFileNames(path, false); SendString(handler, listStr); else if (insStr.Substring(0, 4

17、) = Queu)/获取下载文件夹请求,回复完整文件名列表 string path = insStr.Substring(5, insStr.Length - 5); string listStr = GetFileNames(path, true); SendString(handler, listStr); else if (insStr.Substring(0, 4) = upld)/收到上传文件请求 string reFileName = insStr.Substring(5, insStr.Length - 5); LoadFile(reFileName, handler); els

18、e if (insStr.Substring(0, 4) = quit)/收到断开连接命令 HostQuit(); break; catch HostQuit();break; private void LoadFile(string reFileName, Socket handler) try FileStream fs = new FileStream(reFileName, FileMode.Create, FileAccess.Write); handler.Receive(buffer, 8, SocketFlags.None);/接收文件大小 long filesize = Bi

19、tConverter.ToInt64(buffer, 0); long receiveCount = 0; while (receiveCount filesize)/接收文件 int readcount = handler.Receive(buffer, bufferSize, SocketFlags.None); fs.Write(buffer, 0, readcount); receiveCount += readcount; fs.Close(); catch HostQuit(); private void SendFile(string fileNmae, Socket handl

20、er) try FileStream fs = new FileStream(fileNmae, FileMode.Open, FileAccess.Read); long size = fs.Length; byte bysize = BitConverter.GetBytes(size); handler.Send(bysize, 8, SocketFlags.None);/发送文件大小 BinaryReader br = new BinaryReader(fs); int sendcount = 0; while (sendcount size)/发送文件 int readcount =

21、 br.Read(buffer, 0, bufferSize); sendcount += readcount; handler.Send(buffer, readcount, SocketFlags.None); catch HostQuit(); private void HostQuit() GlobalValues.canControl.WaitOne(); GlobalValues.canControl.Release(); if (handler.Connected = true) handler.Shutdown(SocketShutdown.Both); handler.Clo

22、se(); private void SendString(Socket handler,string listStr) byte list = Encoding.BigEndianUnicode.GetBytes(listStr); byte listcountbuffer = BitConverter.GetBytes(Convert.ToInt64(list.Length); try handler.Send(listcountbuffer, 8, SocketFlags.None);/发送列表大小 int sendcount = 0; while (sendcount list.Len

23、gth)/发送列表 if (sendcount + bufferSize list.Length)/不是最后一次 int i = handler.Send(list, sendcount, bufferSize, SocketFlags.None); sendcount += i; else int i = handler.Send(list, sendcount, list.Length - sendcount, SocketFlags.None);/发送最后一次 sendcount += i; catch (Exception e) MessageBox.Show(连接断开.); /fil

24、eOnly=true则获取指定目录及子目录内所有文件信息,fileOnly=false则获取指定目录文件信息及文件夹信息 private string GetFileNames(string path, bool fileOnly) string listStr = string.Empty; DirectoryInfo drct = new DirectoryInfo(path); foreach (FileSystemInfo fsi in drct.GetFileSystemInfos() if (fsi is FileInfo) /文件 FileInfo fi = (FileInfo)

25、fsi; listStr += fi.FullName; listStr += n; if (fi.Length 1024) string sizeStr = fi.Length.ToString() + 字节; listStr += sizeStr; else if (fi.Length 1024 * 1024) double temp = Convert.ToDouble(fi.Length) / 1024; string sizeStr = string.Format(0:F1, temp) + KB; listStr += sizeStr; else if (fi.Length 102

26、4 * 1024 * 1024) double temp = Convert.ToDouble(fi.Length) / 1024 / 1024; string sizeStr = string.Format(0:F1, temp) + MB; listStr += sizeStr; else double temp = Convert.ToDouble(fi.Length) / 1024 / 1024 / 1024; string sizeStr = string.Format(0:F1, temp) + GB; listStr += sizeStr; listStr += n; listS

27、tr += fi.LastWriteTime.ToString(yyyy-MM-dd hh:mm:ss); listStr += n; else if (fsi is DirectoryInfo) if (fileOnly) listStr += GetFileNames(fsi.FullName, true); else /文件夹 DirectoryInfo di = (DirectoryInfo)fsi; listStr += di.FullName; listStr += n; listStr += dir; listStr += n; listStr += di.LastWriteTi

28、me.ToString(yyyy-MM-dd hh:mm:ss); listStr += n; return listStr; public 服务器() InitializeComponent(); Control.CheckForIllegalCrossThreadCalls = false; string HostName = Dns.GetHostName(); /得到主机名 IPHostEntry IpEntry = Dns.GetHostEntry(HostName); /得到主机IP string strIPAddr = IpEntry.AddressList0.ToString(

29、); tsTxb_IPAdd.Text = strIPAddr; hostIPAddress = IPAddress.Parse(strIPAddr); Server = new IPEndPoint(hostIPAddress,Convert.ToInt32(tsTxb_Port.Text); sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Bind(Server); sock.Listen(10); string str = 正在监听端口 + tsTxb_Por

30、t.Text + .; tsLbl_Status.Text = 状态: + str; AcceptTh = new Thread(ThAccept); AcceptTh.Start();/开始监听端口/下面是监听和停止监听的按钮事件private void btn_Start_Click(object sender, EventArgs e) tsBtn_Start.Enabled = false; tsBtn_Stop.Enabled = true; Server = new IPEndPoint(hostIPAddress, Convert.ToInt32(tsTxb_Port.Text)

31、; sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Bind(Server); sock.Listen(10); string str = 正在监听端口 + tsTxb_Port.Text + .; tsLbl_Status.Text = 状态: + str; AcceptTh = new Thread(ThAccept); AcceptTh.Start(); private void btn_stop_Click(object sender, EventArgs

32、e) tsBtn_Start.Enabled = true; tsBtn_Stop.Enabled = false; try sock.Shutdown(SocketShutdown.Both); catch sock.Close(); tsLbl_Status.Text = 状态:已停止监听; 2.5.2 客户(client)程序/MyThread.cs中的实现using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Net.So

33、ckets;using System.Threading;using System.Windows.Forms;namespace 客户端_TCP文件传输 public class myThread Thread downloadTh; Thread uploadTh; Socket wordSocket; string fileName; string savePath; byte buffer; const int bufferSize = 4096; ToolStripProgressBar tspBar; ToolStripStatusLabel speed; int startTim

34、e=0; long receivecount = 0; long sendCount = 0; int upOrDown = 1;/指示上传或下载 System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); public myThread(Socket workSock, string FileName,string SavePath, ref ToolStripProgressBar TspBar, ref ToolStripStatusLabel Speed) wordSocket = workSock; fi

35、leName = FileName; savePath = SavePath; buffer = new bytebufferSize; downloadTh = new Thread(new ThreadStart(Download); uploadTh = new Thread(new ThreadStart(Upload); tspBar = TspBar; speed = Speed; public myThread(Socket workSock, string FileName,ref ToolStripProgressBar TspBar, ref ToolStripStatus

36、Label Speed) wordSocket = workSock; fileName = FileName; buffer = new bytebufferSize; downloadTh = new Thread(new ThreadStart(Download); uploadTh = new Thread(new ThreadStart(Upload); tspBar = TspBar; speed = Speed; public void StartDownload() upOrDown = 1; downloadTh.Start(); timer1.Enabled = true;

37、 timer1.Interval = 100; timer1.Tick += new EventHandler(timer1_Tick); startTime = System.Environment.TickCount; timer1.Start(); public void StartUpload() upOrDown = 0; uploadTh.Start(); timer1.Enabled = true; timer1.Interval = 50; timer1.Tick += new EventHandler(timer1_Tick); startTime = System.Envi

38、ronment.TickCount; timer1.Start(); void timer1_Tick(object sender, EventArgs e) int spentTime = System.Environment.TickCount - startTime; if (spentTime != 0) if (upOrDown = 1) double sp = Convert.ToDouble(receivecount) / Convert.ToDouble(spentTime) * 1000 / 1024; if (sp 1024) speed.Text = tspBar.Val

39、ue.ToString() + % 下载速度: + string.Format(0:F1, sp) + KB; else speed.Text = tspBar.Value.ToString() + % 下载速度: + string.Format(0:F1, sp / 1024) + MB/S; else double sp = Convert.ToDouble(sendCount) / Convert.ToDouble(spentTime) * 1000 / 1024; if (sp 1024) speed.Text = tspBar.Value.ToString() + % 上传速度: +

40、 string.Format(0:F1, sp) + KB; else speed.Text = tspBar.Value.ToString() + % 上传速度: + string.Format(0:F1, sp / 1024) + MB/S; private void Download() try string ins = name= + fileName; byte data = Encoding.BigEndianUnicode.GetBytes(ins); wordSocket.Send(data, data.Length, SocketFlags.None);/发送下载请求 str

41、ing reFileName = savePath + + GetFileName(fileName); Directory.CreateDirectory(savePath); FileStream fs = new FileStream(reFileName, FileMode.Create, FileAccess.Write); wordSocket.Receive(buffer, 8, SocketFlags.None);/接收文件大小 long filesize = BitConverter.ToInt64(buffer, 0); while (receivecount filesi

42、ze)/接收文件 int readcount = wordSocket.Receive(buffer, bufferSize, SocketFlags.None); fs.Write(buffer, 0, readcount); receivecount += readcount; tspBar.Value = Convert.ToInt32(Convert.ToDouble(receivecount) / Convert.ToDouble(filesize) * 100); tspBar.Value = 100; timer1_Tick(new object(), new EventArgs

43、(); fs.Close(); timer1.Stop(); StaticValue.isBusy = false; catch MessageBox.Show(连接断开.); timer1.Stop(); if (wordSocket.Connected = true) wordSocket.Shutdown(SocketShutdown.Both); wordSocket.Close(); timer1.Stop(); StaticValue.isBusy = false; private void Upload() try string shortFileName = fileName.Substring(fileName.LastIndexOf(

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!