通过代理服务器,进行FTP操作_dingqiao8604的博客-程序员秘密

在网上搜了一下,对.Net的代理服务器和Ftp操作进行一些整理.
代理服务类NetProxy
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Net;
using  System.IO;

namespace  WindowsApplication4
{
    
public class NetProxy
    
{
        
string _ProxyAddress = String.Empty;

        
public string ProxyAddress
        
{
            
get return _ProxyAddress; }
        }

        
int _ProxyPort = 0;

        
public int ProxyPort
        
{
            
get return _ProxyPort; }
        }


        
public NetProxy(string proxyAddress, int proxyPort)
        
{            
            _ProxyAddress 
= proxyAddress;            
            _ProxyPort 
= proxyPort;
        }


        
/**//// <summary>
        
/// 获得代理服务器
        
/// </summary>
        
/// <param name="userName">代理用户名</param>
        
/// <param name="userKey">代理用户密码</param>
        
/// <returns></returns>

        public WebProxy GetProxy(string userName, string userKey)
        
{
            WebProxy _WP 
= new WebProxy(ProxyAddress, ProxyPort);
            
//本地地址不使用代理服务器
            _WP.BypassProxyOnLocal = true;

            ICredentials credentials 
= new NetworkCredential(userName, userKey);
            _WP.Credentials 
= credentials;
            
return _WP;            
        }


        
/**//// <summary>
        
/// 设置全局代理服务
        
/// </summary>
        
/// <param name="webProxy"></param>

        public void SetAllProxy(WebProxy webProxy)
        
{
            WebRequest.DefaultWebProxy 
= webProxy;
        }


        
public void Test(string userName, string userKey)
        
{
            
try
            
{
                HttpWebRequest request 
= (HttpWebRequest)WebRequest.Create(new Uri("http://www.sina.com.cn"));
                request.Proxy 
= GetProxy(userName, userKey);
                request.UserAgent 
= "Mozilla/4.0";
                request.Method 
= "POST";
                request.ContentType 
= "application/x-www-form-urlencoded";
                request.AllowAutoRedirect 
= true;
                
byte[] str = System.Text.Encoding.ASCII.GetBytes("username=admin");
                request.ContentLength 
= str.Length;
                Stream temps 
= request.GetRequestStream();
                
return true;
            }

            
catch (WebException ex)
            
{
                
return false;
            }
           
          
        }

    }

}


Ftp操作类
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;
using  System.Net;

namespace  WindowsApplication4
{
    
public class Ftp
    
{
        
string _ftpServerIP = String.Empty;

        
public string FtpServerIP
        
{
            
get return _ftpServerIP; }
        }


        WebProxy _Proxy 
= null;

        
public WebProxy Proxy
        
{
            
get return _Proxy; }            
        }


        
string _ftpUserID = String.Empty;

        
public string FtpUserID
        
{
            
get return _ftpUserID; }            
        }


        
string _ftpPassword = String.Empty;

        
public string FtpPassword
        
{
            
get return _ftpPassword; }            
        }



        
public Ftp(string ftpServerIP, string ftpUserID, string ftpPassword, WebProxy webProxy)
        
{
            _ftpServerIP 
= ftpServerIP;
            _ftpUserID 
= ftpUserID;
            _ftpPassword 
= ftpPassword;
            _Proxy 
= webProxy;
        }


        
/**//// <summary>
        
/// 创建FTP实体
        
/// </summary>
        
/// <param name="uri">InterNet的URI信息</param>
        
/// <returns>FTP实体</returns>

        private FtpWebRequest CreatFtp(string uri)
        
{
            FtpWebRequest _FtpRequest 
= null;
            _FtpRequest 
= (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
            
//指定文件传输类型
            _FtpRequest.UseBinary = true;
            _FtpRequest.Credentials 
= new NetworkCredential(FtpUserID, FtpPassword);
            
// 默认为true,连接不会被关闭
            
// 在一个命令之后被执行
            _FtpRequest.KeepAlive = false;
            
//设置代理
            _FtpRequest.Proxy = this.Proxy;
            
return _FtpRequest;
        }


        
/**//// <summary>
        
/// 上传文件
        
/// </summary>
        
/// <param name="filename">文件全名称</param>

        private void Upload(string filename)
        
{
            FileInfo fileInf 
= new FileInfo(filename);
            
string uri = "ftp://" + FtpServerIP + "/" + fileInf.Name;

            FtpWebRequest reqFTP 
= this.CreatFtp(uri);            

            
// 指定执行什么命令
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

            
// 上传文件时通知服务器文件的大小
            reqFTP.ContentLength = fileInf.Length;

            
// 缓冲大小设置为2kb
            int buffLength = 2048;

            
byte[] buff = new byte[buffLength];
            
int contentLen;

            
// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
            FileStream fs = fileInf.OpenRead();

            
// 把上传的文件写入流
            Stream strm = reqFTP.GetRequestStream();

            
// 每次读文件流的2kb
            contentLen = fs.Read(buff, 0, buffLength);

            
// 流内容没有结束
            while (contentLen != 0)
            
{
                
// 把内容从file stream 写入 upload stream
                strm.Write(buff, 0, contentLen);

                contentLen 
= fs.Read(buff, 0, buffLength);
            }


            
// 关闭两个流
            strm.Close();
            fs.Close();

        }


        
/**//// <summary>
        
/// 下载文件
        
/// </summary>
        
/// <param name="filePath">路径</param>
        
/// <param name="fileName">文件名称</param>

        private void Download(string filePath, string fileName)
        
{            

            
string uri = "ftp://" + FtpServerIP + "/" + fileName;

            FtpWebRequest reqFTP 
= this.CreatFtp(uri);

            FileStream outputStream 
= new FileStream(filePath + "\\" + fileName, FileMode.Create);            

            reqFTP.Method 
= WebRequestMethods.Ftp.DownloadFile;

            FtpWebResponse response 
= (FtpWebResponse)reqFTP.GetResponse();

            Stream ftpStream 
= response.GetResponseStream();

            
long cl = response.ContentLength;

            
int bufferSize = 2048;

            
int readCount;

            
byte[] buffer = new byte[bufferSize];

            readCount 
= ftpStream.Read(buffer, 0, bufferSize);

            
while (readCount > 0)
            
{
                outputStream.Write(buffer, 
0, readCount);

                readCount 
= ftpStream.Read(buffer, 0, bufferSize);
            }


            ftpStream.Close();

            outputStream.Close();

            response.Close();

        }

    }

}

转载于:https://www.cnblogs.com/chinaicm/archive/2008/07/14/1242387.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dingqiao8604/article/details/101331197

智能推荐

微型计算机感染病毒后怎么彻底清除,发现计算机病毒后,比较彻底的清除方式是什么..._weixin_39788969的博客-程序员秘密

发现计算机病毒后,比较彻底的清除方式是“格式化磁盘”。格式化磁盘是指对磁盘或磁盘中的分区进行初始化的一种操作,这种操作会把磁盘内所有文件都清除,包括隐藏文件。本教程操作环境:windows7系统、Dell G3电脑。相关推荐:《编程学习网站》发现计算机病毒后,比较彻底的清除方式是“格式化磁盘”。格式化磁盘会把磁盘内所有文件都清除,包括隐藏文件。格式化是指对磁盘或磁盘中的分区(partition)进...

rtl驱动 ubuntu 禁用_转载:Ubuntu 14.04 安装 rtl8188cus 驱动_weixin_39529463的博客-程序员秘密

光盘中自带的linux驱动是基于内核2.6的,ubuntu14的内核是3.13,根据光盘中默认的驱动,得知nw336 model是RTL8188CUS,官方下载地址:http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&amp;PNid=21&amp;PFid=48&amp;Level=5&amp;Conn=4&amp;Do...

方法结构Oracle查看表结构的几种方法_weixin_33940102的博客-程序员秘密

新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正    1,DESCRIBE 命令    使用方法如下:    SQL&amp;gt; describe nchar_tst(nchar_tst为表名)    显示的结果如下: 名称                                      是否为空? 类型 ---------------------...

STC单片机操作系统——RTX51 Tiny_stc单片机 操作系统_知否,知否的博客-程序员秘密

RTX51 是keil公司开发的一款实时操作系统,其有两个版本:1.Tiny 2.Full,区别如下:RTX51 Full:使用四个任务优先权完成同时存在时间片轮转调度和抢先的任务切换 RTX51工作在与中断功能相似的状态下 信号和信息可以通过邮箱系统在任务之间互相传递 你可以从一存储池中分配和释放内存 你可以强迫一个任务等待中断 超时或者是从另一个任务或中断发出的信号或信息...

微电子新手入门之Linux下进入Cadence开发环境_linux打开cadence_红豆布丁RFIC的博客-程序员秘密

1、进入Linux系统,在桌面空白处右键,打开终端:2、输入命令 ls ,查看所有文件3、输入命令 cd Eda ,进入我们的项目设计文件中,然后再 ls4、本次使用IBM8HP工艺,则首先进入该文件夹中,输入命令 cd IBM8HP ,然后再输入virtuoso&amp;amp; 启动Cadence 617版本。5、成功打开Cadence 617开发环境...

随便推点

Linux IPC 同步(一):互斥锁 条件变量_weixin_30583563的博客-程序员秘密

线程范围:同一个进程内的多个线程访问一些全局变量时,需要保护好临界区,保证不产生脏数据Linux 中的互斥锁#include &lt;pthread.h&gt;pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t recmutex = PTHREAD_RECURSIVE_MUTEX_INI...

数据库_weixin_30632883的博客-程序员秘密

use master--转到系统数据库master go--判断系统sysdatabases中是否存在stu数据库if exists( select * from sysdatabases where name='stu')drop database stu--如果有则删除go--执行--创建数据库stucreate database stuon(...

磁盘分区——主分区、扩展分区、逻辑分区_叛逆的鲁鲁修love CC的博客-程序员秘密

主分区、扩展分区、逻辑分区 一个硬盘的主分区也就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则该硬盘必须得有一个主分区。主分区,也称为主磁盘分区,和扩展分区、逻辑分区一样,是一种分区类型。主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的,逻辑分区则必须建立于扩展分区中)...

MATLAB火焰识别系统[完美运行,详细解释,GUI界面,万字文稿]_Matlab图形设计的博客-程序员秘密

MATLAB火焰识别系统一、课题介绍森林承担着为人类提供氧气以及回收二氧化碳等废弃气体的作用,森林保护显得尤其重要。但是每年由于火灾引起的事故不计其数,造成重大的损失。如果有一款监测软件,从硬件处获得的图像中监测是否有火焰,从而报警,为人们灭火争取时间,显得尤其有价值。二、技术原理本课题为基于颜色的火焰识别技术。将彩色图像转化为HSV图像,当HSV三通道比例符合一定经验值的时候,就确定为火焰的像素,将目标变成白色,其余变为黑色。结合形态学进行滤波,去除干扰面积。再原图的基础上进行定位框出,并且进行预

ROC曲线以及评估指标F1-Score, recall, precision-整理版_a_achengsong的博客-程序员秘密

最近一直在看ROC曲线,查阅了一些资料,并进行了整理,文章结尾有原资料链接。希望能自己和各位节约时间来找资料,花更多的时间来学习。ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣 。ROC曲线怎么来的呢,我们来看经典的混淆矩阵:ROC曲线一般的横轴是FPR,纵轴是F

74ls系列芯片的分类_74ls52_qq_40787630的博客-程序员秘密

74ls00 2输入四与非门74ls01 2输入四与非门 (oc)74ls02 2输入四或非门74ls03 2输入四与非门 (oc)74ls04 六倒相器74ls05 六倒相器(oc)74ls06 六高压输出反相缓冲器/驱动器(oc,30v)74ls07 六高压输出缓冲器/驱动器(oc,30v)74ls08 2输入四与门74ls09 2输入...

推荐文章

热门文章

相关标签