77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2018-11-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

服务如果关闭监听,效果如下图:

客服端运行,如下图:

输入服务器端的IP和端口号进行连接,效果如图:

5

下面设置文件保存位置,如图:

下面演示上传一个视频文件,然后再下载下来,其中上传过程的进度信息:

上传完成后的效果图:

6

下载文件的进度提示信息:

下载完成后,指定目录下就有了该文件了:

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 bufferSize= 4096; Thread mythread; Socket handler;

public WorkThread(Socket workSocket) {

handler = workSocket;

buffer = new byte[bufferSize];

mythread = new Thread(BeginCommunication); }

public void Start() {

mythread.Start(); }

public void Abort() {

mythread.Abort(); }

private void BeginCommunication() {

while (true)//从客户端接收数据,直到连接断开

7

{ try {

int reCount = handler.Receive(buffer); string insStr =Encoding.BigEndianUnicode.

GetString(buffer, 0, reCount);

if (insStr.Substring(0, 4) == \)//收到下文件请求 {

string fileName = insStr.

Substring(5, insStr.Length - 5);

SendFile(fileName, handler); }

else if (insStr.Substring(0, 4) == \)//收到获取根目录请求

{

string listStr = GetFileNames(\, false); SendString(handler, listStr); }

else if (insStr.Substring(0, 4) == \)//收到获取指定目录内容请求

{

string path = insStr.Substring(5, insStr.Length - 5);

string listStr = GetFileNames(path, false); SendString(handler, listStr); }

else if (insStr.Substring(0, 4) == \)//获取下载文件夹请求,回复完整文件名列表 {

string path = insStr.Substring(5, insStr.Length - 5);

string listStr = GetFileNames(path, true); SendString(handler, listStr); }

else if (insStr.Substring(0, 4) == \)//收到上传文件请求

{

string reFileName = insStr.Substring(5, insStr.Length - 5);

LoadFile(reFileName, handler); }

else if (insStr.Substring(0, 4) == \)//收到断开连接命令

{

8

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 = BitConverter.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 handler) { 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;

9

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机网络课程设计报告文件传输协议的简单实现(2)在线全文阅读。

计算机网络课程设计报告文件传输协议的简单实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/298675.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: