/// 서버랑 비교해서 옛 버전이면 다운. private void fnFTPDownSync() { //현재 로컬과 서버의 업로드 날짜를 비교. 서버의 업로드 날짜가 더 크면 다운 DateTime dtLocalFileDate; mServerVerDate = fnReadVer(out mFtpCon); //ftp 연결이 안되어있을 경우 빠져나오자. if (!mFtpCon) { return; } try { dtLocalFileDate = DateTime.ParseExact(Convert.ToString(Network.ReadIniFile("FileTouchDate", "Date", @".\setting.ini")), "yyyyMMddHHmmss", null); } catch { dtLocalFileDate = new DateTime(1, 1, 1); } if (dtLocalFileDate < mServerVerDate) { if (MessageBox.Show("서버의 파일이 최신입니다.\r\n최신버전으로 동기화 하시겠습니까?", "파일 동기화", MessageBoxButtons.YesNo) == DialogResult.Yes) { //기존 파일은 백업. try { File.Copy(@".\Contents.db", @".\Contents_Bak.db", true); } catch (Exception e) { MessageBox.Show("파일 백업 중 오류 : " + e.ToString()); } string strResult = Network.FtpDown(mAddress, mID, mPW, "Contents.db"); if (strResult != "") { MessageBox.Show(strResult); } //동기화를 성공했을 경우, 다운 받은 날짜의 정보를 setting.ini에 저장해둔다. upload시에 비교하여 동기화여부를 결정하는데 사용한다. else { Network.WriteIniFile("FileTouchDate", "Date", mServerVerDate.ToString("yyyyMMddHHmmss"), @".\setting.ini"); } } } }
/// ver.ps 파일 읽기. [0]: 업로드 [1]: 다운로드 /// <returns>서버 업로드 날짜</returns> private DateTime fnReadVer(out bool ftpConnect) { //예외 추가하기 . 1 : 파일이 없을 때 2 : 안 짧릴 때 3 : �ス摸� 정보인지 길이로 체크하자. string strDate = ""; DateTime dtFileDate = new DateTime(); string strResult = ""; // ??이거 왜 해놨지?? 한 방에 연결 안되는 경우 때문에 이렇게 해뒀나? //for (int i = 0; i < 5; i++) //{ strResult = Network.FtpDown(mAddress, mID, mPW, "ver.ps"); //if (strResult == "") //break; //} if (strResult == "") //서버에 있는 버전정보 다운 { try { StreamReader objReader = new StreamReader(@".\ver.ps"); strDate = objReader.ReadLine().Trim(); objReader.Close(); dtFileDate = DateTime.ParseExact(strDate, "yyyyMMddHHmmss", null); if (dtFileDate > DateTime.Now) { dtFileDate = new DateTime(1, 1, 1); } ftpConnect = true; } catch { ftpConnect = false; } } else { MessageBox.Show("FTP 연결 실패 : " + strResult); ftpConnect = false; } return(dtFileDate); }