文件操作的核心代码:

/// <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. Knights of a Polygonal Table CodeForces - 994B (贪心)

    大意:n个骑士, 每个骑士有战力p, 钱c, 每个骑士可以抢战力比他低的钱, 每个骑士最多抢k次, 对每个骑士求出最大钱数 按战力排序后, 堆维护动态前k大即可 #include <iostre ...

  2. 『Scrapy』终端调用&选择器方法

    Scrapy终端 示例,输入如下命令后shell会进入Python(或IPython)交互式界面: scrapy shell "http://www.itcast.cn/channel/te ...

  3. Android studio Suggestion: use tools:overrideLibrary=”jp.wasabeef.blurry” to force usage

    异常提示: 应用在Android Studio Build的时候,抛出了如下异常: Error:Execution failed for task ‘:app:processDebugManifest ...

  4. Web Service基本概念

    Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...

  5. canvas绘制直线

    HTML5 <canvas>元素用于图形的绘制,该元素只是图形容器,必须使用javascript脚本绘制图形创建一个画布:<canvas id="myCanvas" ...

  6. sql server2008 如何获取上月、上周、昨天、今天、本周、本月的查询周期(通过存储过程)

    我这边有一个需求要统计订单数据,需要统计订单的上传日期,统计的模块大概是 那么上月.上周.昨天.今天.本周.本月应该是怎样呢? 1.数据分析 因为今天是动态数据,我要查月份(上月.本月),应该是一个日 ...

  7. DBGRID 拖动滚动条 和 鼠标滚轮的问题

    滚动条拖动问题 默认是,拖动时,网格内数据不变,等放开鼠标后才会变. 方法 拖动时同时变,当前记录也变,不用新控件 http://wenwen.sogou.com/z/q185291591.htm 鼠 ...

  8. java发生邮件(转)

    参考链接:http://www.runoob.com/java/java-sending-email.html package test.mail; import com.sun.mail.util. ...

  9. NSScanner

    NSScanner NSScanner:该类主要实现对字符串扫描.并且该扫描必须从头到尾扫描(也可以跳到指定的地方进行扫描),开始扫描必须应用到函数,连续的数字之间可以用空格隔开,如:35 15.2 ...

  10. SDWebImage导入问题

    最新的SDWebImage由于是基于ARC模式写的,如果创建的是非ARC醒目的童鞋们注意,导入文件夹之后,先添加ImageIO.framework,mapKit.framework这两个库,在非ARC ...