FTP文件服务器代码
文件操作的核心代码:
/// <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文件服务器代码的更多相关文章
- 基于IIS的HTTP、FTP文件服务器搭建与性能测试
鉴于CAPI中文件操作是非常重要的一环,为了提高性能,直接提供下载地址供客户端下载: 1.基于IIS的HTTP文件服务器.FTP文件服务器(为了减少因编码造成的性能问题,尽量不要在文件服务器上写代码) ...
- C# FTP操作代码实现
C# FTP 实现方式,废话不多说,直接上代码 public class FtpClient { #region 构造函数 /// <summary> /// 创建FTP工具 /// & ...
- 使用git代替FTP部署代码到服务器的例子
这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量.节省时间,需要的朋友可以参考下 本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和 ...
- linux下搭建ftp文件服务器
linux下搭建ftp文件服务器 一.搭建步骤(以在centos7中搭建为例) 1.首先检查一下系统中是否已经安装了vsftpd软件 # 查看是否安装vsftpd rpm -q vsftpd rpm ...
- ftp同步代码
一个很naive的代码,用来做ftp的"主->从 下载,从->主 上传".ftp可不像mysql那样还有log可以用,所以完全naive的做法:连到ftp server ...
- Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...
- Java上传文件FTP服务器代码
1. 在实际的应用重,通常是通过程序来进行文件的上传. 2. 实现java上传文件到ftp服务器中 新建maven项目 添加依赖 <dependency> <groupId>c ...
- 关于为什么要在项目中使用FTP文件服务器
传统的上传一般做法是http上传,后台接收文件流,然后写入到服务器本地硬盘的某个位置. 如果我们想把文件单独存放在别的服务器上,那就可以借助ftp服务器了. 上传的流程则变为,http上传,后台接收文 ...
- IIS FTP文件服务器搭建步骤
利用IIS搭建需要验证用户用的FTP服务器(当然也可以不用验证,为了安全,添加验证) 1.C盘下创建文件夹,iftppub 2.打开关闭Windows功能,Internet信息服务全选,操作完后,重启 ...
随机推荐
- bzoj3944: Sum 杜教筛板子题
板子题(卡常) 也可能是用map太慢了 /************************************************************** Problem: 3944 Us ...
- mysql导出导入数据库表
1.下载数据库 mysqldump db_name -h 192.168.5.162 -uroot -p > /var/www/db_name.sql(这个可以自定义) 2,下载数据库中的某个 ...
- hdu1180 优先队列bfs+判断方向
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- python学习笔记(八)---关于Django的下载以及环境配置
下载链接: https://www.djangoproject.com/download/ (建议选择 1.6版本) 然后安装 Django下载后为压缩包,解压缩跟Python放在同一个根目录,在do ...
- poj 1163 The Triangle 搜索 难度:0
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37931 Accepted: 22779 De ...
- POJ 3295 Tautology 构造 难度:1
Tautology Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9580 Accepted: 3640 Descrip ...
- linux定时任务:crontab命令
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查 ...
- android机顶盒真机调试方法
最近接触电视APP开发,之前对Android开发也不太了解还一直以为不能真机调试.最近静下心来想一想肯定能真机调试的,我是我不知道而已.现在讲述一下真机调试的步骤: 1.进入设置--关于,连续点击版本 ...
- STL标准库-迭代器适配器
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 这次主要介绍一下迭代器适配器.以reverse_iterator(反向迭代器),insert_iterator(插入迭代器),o ...
- L236
The Norwegian Authority for Investigation of Economic and Environmental Crime (Okokrim) said the mov ...