728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Net;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
#region 이벤트를 설정한다.
this.searchButton.Click += searchButton_Click;
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 조회 버튼 클릭시 처리하기 - searchButton_Click(sender, e)
/// <summary>
/// 조회 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void searchButton_Click(object sender, EventArgs e)
{
try
{
Cursor = Cursors.WaitCursor;
this.statusLabel.Text = "작업을 시작합니다.";
this.fileSizeTextBox.Clear();
this.timeStampTextBox.Clear();
Refresh();
this.fileSizeTextBox.Text = GetFTPFileSize
(
this.urlTextBox.Text,
this.userNameTextBox.Text,
this.passwordTextBox.Text
).ToString();
this.timeStampTextBox.Text = GetFTPFileTimestamp
(
this.urlTextBox.Text,
this.userNameTextBox.Text,
this.passwordTextBox.Text
).ToString();
this.statusLabel.Text = "작업을 완료했습니다.";
}
catch(Exception exception)
{
this.statusLabel.Text = "에러가 발생했습니다.";
MessageBox.Show(exception.Message);
}
finally
{
Cursor = Cursors.Default;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region FTP 파일 크기 구하기 - GetFTPFileSize(ftpURL, ftpUserName, ftpPassword)
/// <summary>
/// FTP 파일 크기 구하기
/// </summary>
/// <param name="ftpURL">FTP URL</param>
/// <param name="ftpUserName">FTP 사용자명</param>
/// <param name="ftpPassword">FTP 패스워드</param>
/// <returns>FTP 파일 크기</returns>
private long GetFTPFileSize(string ftpURL, string ftpUserName, string ftpPassword)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpURL);
request.Method = WebRequestMethods.Ftp.GetFileSize;
request.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
try
{
using(FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
return response.ContentLength;
}
}
catch(Exception exception)
{
if(exception.Message.Contains("File unavailable"))
{
return -1;
}
throw;
}
}
#endregion
#region FTP 파일 타임스탬프 구하기 - GetFTPFileTimestamp(ftpURL, ftpUserName, ftpPassword)
/// <summary>
/// FTP 파일 타임스탬프 구하기
/// </summary>
/// <param name="ftpURL">FTP URL</param>
/// <param name="ftpUserName">FTP 사용자명</param>
/// <param name="ftpPassword">FTP 패스워드</param>
/// <returns>FTP 파일 타임스탬프</returns>
private DateTime GetFTPFileTimestamp(string ftpURL, string ftpUserName, string ftpPassword)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpURL);
request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
request.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
try
{
using(FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
return response.LastModified;
}
}
catch(Exception exception)
{
if(exception.Message.Contains("File unavailable"))
{
return new DateTime(3000, 1, 1);
}
throw;
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 윈도우즈 종료하기 (0) | 2018.12.27 |
---|---|
[C#/COMMON] 프로세서 수 구하기 (0) | 2018.12.24 |
[C#/COMMON] 분할 문제 해결을 위한 분기와 초기 휴리스틱 바인딩 사용하기 (0) | 2018.12.24 |
[C#/COMMON] 분할 문제 해결을 위한 분기와 바인딩 사용하기 (0) | 2018.12.24 |
[C#/COMMON] 분할 문제 해결을 위한 소모적 탐색 사용하기 (0) | 2018.12.24 |
[C#/COMMON] FTP 파일 업로드 하기 (0) | 2018.12.23 |
[C#/COMMON] FTP 텍스트 업로드 하기 (0) | 2018.12.23 |
[C#/COMMON] 실행시 로케일(Locale) 변경하기 (0) | 2018.12.23 |
[C#/COMMON] n번째 루트 계산하기 (0) | 2018.12.23 |
[C#/COMMON] 방화벽 상태 구하기 (0) | 2018.12.23 |
댓글을 달아 주세요