文件操作的核心代码:

/// <summary>
/// FTP文件信息类(帮助进行文件的上传于下载)
/// </summary>
[Serializable()]
public class FileInfo
{
/// <summary>
/// 默认构造函数
/// </summary>
public FileInfo()
{
}
/// <summary>
///
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="size">文件大小</param>
public FileInfo(string filename, long size)
{
this.Filename = filename;
this.Size = size;
}
/// <summary>
/// 文件名
/// </summary>
public string Filename = string.Empty;
/// <summary>
/// 文件大小
/// </summary>
public long Size = long.MinValue;
}
public delegate void PostedDataHandler(string user, byte[] data, string filepath);
public delegate void UpdateHandler(string user, string filepath);

[Serializable()]
public struct UploadData
{
public string Filename;
public byte[] File;
}
/// <summary>
/// 文件操作契约
/// </summary>
public interface IFTPServer
{
void Upload(string user, List<UploadData> files, string filepath);
void Download(string user, string filename, out byte[] file, string filepath);
void GetFiles(out List<FileInfo> files, string filepath);
void Connect(string user);
void Disconnect(string user);
void PostData(string user, byte[] data, string filepath);
event PostedDataHandler PostedData;
event UpdateHandler Update;

}
/// <summary>
/// 可远程操作的文件处理类
/// </summary>
public abstract class PostedData : System.MarshalByRefObject
{
public void Server_PostData(string user, byte[] data, string filepath)
{
this.ImplementedPostData(user, data, filepath);
}

public void Server_Update(string user, string filepath)
{
this.ImplementedUpdate(user, filepath);
}

public abstract void ImplementedPostData(string user, byte[] data, string filepath);

public abstract void ImplementedUpdate(string user, string filepath);
}
public class MachineInfo
{

public static string MachineName = Environment.MachineName;
public static IPEndPoint MachineIP;
public static List<FileInfo> Files = new List<FileInfo>();

/// <summary>
/// 获取文件的列表
/// </summary>
/// <param name="folder"></param>
public static void GetFiles(string folder)
{
if (!Directory.Exists(folder))
return;

foreach (string file in Directory.GetFiles(folder))
{
FileInfo info = new FileInfo(Path.GetFileName(file), (new System.IO.FileInfo(file).Length / 1024));
Files.Add(info);
}
}

/// <summary>
/// 过去机器的IP地址
/// </summary>
/// <returns></returns>
public static IPEndPoint GetMachineIP()
{
IPEndPoint result = null;

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select IPAddress From Win32_NetworkAdapterConfiguration");

foreach (ManagementObject obj in searcher.Get())
{
if (obj["IPAddress"] != null)
{
string[] ip = (string[])obj["IPAddress"];
result = new IPEndPoint(IPAddress.Parse(ip[0]), 9898);
break;
}
}

return result;
}

public static string GetJustIP()
{
string result = null;

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select IPAddress From Win32_NetworkAdapterConfiguration");

foreach (ManagementObject obj in searcher.Get())
{
if (obj["IPAddress"] != null)
{
string[] ip = (string[])obj["IPAddress"];
result = ip[0];
break;
}
}

return result;
}

}

FTP文件服务器代码的更多相关文章

  1. 基于IIS的HTTP、FTP文件服务器搭建与性能测试

    鉴于CAPI中文件操作是非常重要的一环,为了提高性能,直接提供下载地址供客户端下载: 1.基于IIS的HTTP文件服务器.FTP文件服务器(为了减少因编码造成的性能问题,尽量不要在文件服务器上写代码) ...

  2. C# FTP操作代码实现

    C#  FTP 实现方式,废话不多说,直接上代码 public class FtpClient { #region 构造函数 /// <summary> /// 创建FTP工具 /// & ...

  3. 使用git代替FTP部署代码到服务器的例子

    这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量.节省时间,需要的朋友可以参考下 本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和 ...

  4. linux下搭建ftp文件服务器

    linux下搭建ftp文件服务器 一.搭建步骤(以在centos7中搭建为例) 1.首先检查一下系统中是否已经安装了vsftpd软件 # 查看是否安装vsftpd rpm -q vsftpd rpm ...

  5. ftp同步代码

    一个很naive的代码,用来做ftp的"主->从 下载,从->主 上传".ftp可不像mysql那样还有log可以用,所以完全naive的做法:连到ftp server ...

  6. Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现

    作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...

  7. Java上传文件FTP服务器代码

    1. 在实际的应用重,通常是通过程序来进行文件的上传. 2. 实现java上传文件到ftp服务器中 新建maven项目 添加依赖 <dependency> <groupId>c ...

  8. 关于为什么要在项目中使用FTP文件服务器

    传统的上传一般做法是http上传,后台接收文件流,然后写入到服务器本地硬盘的某个位置. 如果我们想把文件单独存放在别的服务器上,那就可以借助ftp服务器了. 上传的流程则变为,http上传,后台接收文 ...

  9. IIS FTP文件服务器搭建步骤

    利用IIS搭建需要验证用户用的FTP服务器(当然也可以不用验证,为了安全,添加验证) 1.C盘下创建文件夹,iftppub 2.打开关闭Windows功能,Internet信息服务全选,操作完后,重启 ...

随机推荐

  1. spojPlay on Words

    题意:给出几个词语,问能不能接龙. 一开始猜只要所有字母连通,并且只有一个字母出现在开头次数为奇,一个字母末尾为奇,其它偶,就行.后来发现全为偶也行.而且条件也不对,比如ac,ac,ac就不行.实际上 ...

  2. 『PyTorch』第五弹_深入理解autograd_中:Variable梯度探究

    查看非叶节点梯度的两种方法 在反向传播过程中非叶子节点的导数计算完之后即被清空.若想查看这些变量的梯度,有两种方法: 使用autograd.grad函数 使用hook autograd.grad和ho ...

  3. WebSocket教程(一)

    一.websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP有 1 ...

  4. OncePerRequestFilter的作用

    在spring中,filter都默认继承OncePerRequestFilter,但为什么要这样呢? OncePerRequestFilter顾名思义,他能够确保在一次请求只通过一次filter,而不 ...

  5. OC 内存管理之自动内存管理ARC

    一.基本简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因 ...

  6. BZOJ1299 [LLH邀请赛]巧克力棒

    怎么又是博弈论...我去 Orz hzwer,这道题其实是可以转化成Nim游戏的! "第一步: 先从n根巧克力棒中取出m(m>0)根,使得这m根巧克力棒的xor和为0,同时使得剩下的n ...

  7. learning docker steps(8) ----- docker network 初次体验

    参考: docker network 主要是介绍了docker 容器之间的组网模式, 一般来说实像组网主要是依赖于bridge iptalbes vlan来实现,但是附带的如端口转发会降低效率. 新型 ...

  8. cookie -- 添加删除

    前段时间学到了cookie,之前的公司用的jquery插件,现在终于学到了原生的js <!doctype html> <html> <head> <meta ...

  9. c#重写和重载的区别?重写和重载的意义?

    重写: 要求方法名.参数合返回值相同: 意义:重写是为了增强类的重用性和复用性,扩展性:重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西. 方法重写的 ...

  10. Solrj调用Solr API

    在MyEclipse下的SSH项目,要调用Solr接口进行操作. 1.先运行solr 2.在已搭建好的SSH项目中用Solrj调用Solr的接口 3.导入如下solr的jar包到搭建好的SSH项目的W ...