using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Collections;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using System.Net.Sockets;
using System.Threading;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.Common;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : FTP 다운로드
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Network
{
public class NetworkFtp : INetworkFTP
{
private readonly string LOCAL_DOWN_PATH = BaseCom.NxRootPath + @"DOWN\"; //Download File Location (다운로드 파일위치)
///
/// StateServer Object (StateServer 객체)
///
public StateServer StateObject = (StateServer)StateServer.GetInstance();
///
/// POS Status Value (POS 상태값)
///
private PosStatus m_cPosStatus = null;
private FTP m_ClsFtp;
public NetworkFtp()
{
m_cPosStatus = (PosStatus)StateObject.POS;
}
///
/// FTP 서버에 Connect
///
///
///
///
///
///
/// 0 : 정상접속, -1:시간초과, -2:로그인 실패, -3:서버접속 실패, -4:지원하지 않는 시스템
public int Connect(string sServer, string sUserId, string sPassword, int iTimeOutSeconds, int iPort)
{
int nReturn = -9;
try
{
m_ClsFtp = new FTP((iPort == 0) ? sServer : sServer + ":" + iPort, sUserId, sPassword);
if (m_ClsFtp != null) nReturn = 0;
else nReturn = -1;
////m_ClsFtp = new ClsFtp(sServer, sUserId, sPassword, iTimeOutSeconds, iPort);
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// //MessageBox.Show("FTP Server Connect Error !!! [" + nReturn.ToString() + "]");
//// return nReturn;
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Connect()", e.Message);
return nReturn;
}
return nReturn;
}
///
///
///
///
///
///
/// 0:정상종료, -1:Not Connected, -2:Binary Mode set failed, -3: failed local file Create, -4:socket 에러, -5:remote file 없슴, -6:정상수신실패, -7: 파일사이즈 틀림
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
string sMsg = "";
return Download(sSvrDirectory, sLocalDirectory, sFileNm, ref sMsg, sFtpMode);
}
public int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, ref string sMsg, string sFtpMode = PosConst.FTP_CONN_TYPE.PASSIVE)
{
int nReturn = -9;
bool bRet = false;
try
{
if (CmUtil.RightH(sLocalDirectory, 1) != "\\") sLocalDirectory += "\\";
if (Directory.Exists(sLocalDirectory) == false) Directory.CreateDirectory(sLocalDirectory);
bRet = m_ClsFtp.Download(sSvrDirectory + sFileNm, sLocalDirectory + sFileNm, ref sMsg, sFtpMode);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Download(sLocalDirectory, sFileNm, true);
////if (nReturn < 0 && File.Exists(BaseCom.NxDownPath + sFileNm + ".ftp") == true)
////{
//// File.Delete(BaseCom.NxDownPath + sFileNm + ".ftp");
////}
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Download()", e.Message);
sMsg = sFileNm + " " + e.Message;
return nReturn;
}
return nReturn;
}
///
/// FTP서버와의 연결을 종료
///
public void Disconnect()
{
//m_ClsFtp.Close();
//m_ClsFtp.cleanup();
}
///
/// 정해진 디렉토리에 정해진 파일을 업로드
///
///
///
///
/// 0:정상완료, -1:Not Connected, -2: data socket create error, -3: file write 실패, -4:socket error, -5: 정상처리 실패(서버)
public int Upload(string sSvrDirectory, string sLocalDirectory, string sFileNm)
{
int nReturn = -9;
bool bRet = false;
try
{
bRet = m_ClsFtp.Upload(sLocalDirectory + sFileNm, sSvrDirectory + sFileNm);
if (bRet) nReturn = 0;
else nReturn = -1;
////if ((nReturn = m_ClsFtp.Connect()) != 0)
////{
//// return nReturn;
////}
////string sDir = m_ClsFtp.ChangeDir(sSvrDirectory);
////nReturn = m_ClsFtp.Upload(sLocalDirectory, sFileNm, true);
}
catch (Exception e)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
"NetworkFtp.Upload()", e.Message);
return nReturn;
}
return nReturn;
}
}
}