文件操作的核心代码:

/// <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. 『cs231n』神经网络组件

  2. 异常检测——局部异常因子(Local Outlier Factor ,LOF)算法

    在中等高维数据集上执行异常值检测的另一种有效方法是使用局部异常因子(Local Outlier Factor ,LOF)算法.1.算法思想 LOF通过计算一个数值score来反映一个样本的异常程度.这 ...

  3. JS获取昨天/今天/今年第一天的方法

    talk is cheap,show me the code! //获取昨天 var day1 = new Date(); day1.setTime(day1.getTime()-24*60*60*1 ...

  4. JavaScript学习总结(十二)——JavaScript编写类

    在工作中经常用到JavaScript,今天总结一下JavaScript编写类的几种写法以及这几种写法的优缺点,关于JavaScript编写类的方式,在网上看到很多,而且每个人的写法都不太一样,经常看到 ...

  5. 51nod算法马拉松28-a

    题解:水体一枚 按照贪心的思想求出是2的k次方,然后高精度计算 代码: #include<bits/stdc++.h> using namespace std; ; int ans,n,a ...

  6. Java——线程间通信

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  7. Apache 子项目 概述

    apache HTTP Server--------Web服务器(多用于静态网页,有负载均衡效果,可承受每天数百万人访问).apache Abdera>>>>>>& ...

  8. bacula配置

    Bacula Bacula是一款开源的跨平台网络备份工具,提供基于企业级的CS的备份解决方案.可以对数据进行备份.恢复.以及完整性校验.  功能特点: 支持完全备份,增量备份,差异备份. 支持多种恢复 ...

  9. mybatis左连接需要输出左表的指定内容与筛选

    SELECT rpl.ID, rpl.DID, rpl.TRADE_TYPE, rpl.TRADE_TIME, rpl.CALL_TIME, rpl.TRADE_ADDR, rpl.RECEIVE_P ...

  10. sonarqube 代码检查

    再好的程序员也会出bug,所以代码检查很有必要.今天就出一个简单的检查工具代替人工检查. 参考: http://www.cnblogs.com/qiaoyeye/p/5249786.html 环境及版 ...