IT/Visual Studio (C#)

[C# 으로 FTP 접속하는 방법] C# FTP 접속 Visual Studio 2019 기준으로 작성

Ro85 2024. 3. 21. 10:06
반응형

C# 으로 FTP 접속하는 방법

C# 으로 FTP 접속하는 방법, 파일 업로드, 다운로드, 삭제 등 진행

※ 예제코드 1

● FTPManager.cs

using System;

using System.Collections.Generic;

using System.Net;

using System.Text;

namespace Directory_copy
{
         public class FTPManager

        {
            public delegate void ExceptionEventHandler(string LocationID, Exception ex);
            public event ExceptionEventHandler ExceptionEvent;
            public Exception LastException = null;

            public bool IsConnected { get; set; }

            private string ipAddr = string.Empty;
            private string port = string.Empty;
            private string userId = string.Empty;
            private string pwd = string.Empty;

            public FTPManager()
            {
            }

            public bool ConnectToServer(string ip, string port, string userId, string pwd)
            {
                this.IsConnected = false;

                this.ipAddr = ip;
                this.port = port;
                this.userId = userId;
                this.pwd = pwd;

                string url = string.Format(@"FTP://{0}:{1}/", this.ipAddr, this.port);

                try
                {
                    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(url);
                    ftpRequest.Credentials = new NetworkCredential(userId, pwd);
                    ftpRequest.KeepAlive = false;
                    ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
                    ftpRequest.UsePassive = false;

                    using (ftpRequest.GetResponse())
                    {
                    }

                    this.IsConnected = true;
                }

                catch (Exception ex)
                {
                    this.LastException = ex;

                    System.Reflection.MemberInfo info = System.Reflection.MethodInfo.GetCurrentMethod();

                    string id = string.Format("{0}.{1}", info.ReflectedType.Name, info.Name);

                    if (this.ExceptionEvent != null)
                        this.ExceptionEvent(id, ex);
                    return false;
                }

                return true;
            }
        }
    }

 

※ 예제코드 2

 Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Net;
using System.Windows.Forms;

using System.IO;

namespace Directory_copy
{
    public partial class Form1 : Form
    {
        //FTP 접속에 필요한 정보
        string addr = string.Empty;
        string user = string.Empty;
        string pwd = string.Empty;
        string port = string.Empty;

        public Form1()
        {
            InitializeComponent();
        }        

        private void button1_Click(object sender, EventArgs e)
        {  
            addr = "192.168.0.1";
            user = "USERID";
            pwd = "USERPW";
            port = "21";

            FTPManager manager = new FTPManager();

            bool result = manager.ConnectToServer(addr, port, user, pwd);

            if (result == true)
            {
                Console.WriteLine("FTP 접속에 성공했습니다.");
            }
            else
            {
                Console.WriteLine("FTP 접속에 실패했습니다.");
            }
        }
    }
}

 

반응형