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; } } }