ISBN검색프로그램 null 오류 수정
ISBN검색프로그램 프로젝트 폴더 위치 정리 ISBN검색프로그램 설치 파일 업데이트
This commit is contained in:
240
ISBN_Check/Client/ISBN_Client.cs
Normal file
240
ISBN_Check/Client/ISBN_Client.cs
Normal file
@@ -0,0 +1,240 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
// 추가된 참조
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace ISBN_Client
|
||||
{
|
||||
public partial class Client : Form
|
||||
{
|
||||
// FTP ID / PW
|
||||
private string Login_id = "ftpgloria";
|
||||
private string Login_pw = "admin@!@#$";
|
||||
|
||||
// 서버 / 클라이언트 버전
|
||||
private string Sr_Vers = "";
|
||||
private string Cl_Vers = "";
|
||||
|
||||
// 서버 아이피
|
||||
private string Server_Ip = "";
|
||||
|
||||
// 종료시 실행시킬 파일명
|
||||
private string Start_Prg = "";
|
||||
|
||||
// 파일 개수
|
||||
private int Files_Count = 0;
|
||||
|
||||
// 업데이트 진행 파일 수
|
||||
private int down_Count = 0;
|
||||
|
||||
// 업데이트 여부
|
||||
bool tf = false;
|
||||
|
||||
private string sLine = "";
|
||||
|
||||
private string[] str = new string[2];
|
||||
int i = -1;
|
||||
|
||||
DataSet ds = new DataSet("files");
|
||||
|
||||
public Client()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Client_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 파일 목록 생성을 위한 데이터 셋
|
||||
ds.Tables.Add("파일");
|
||||
|
||||
ds.Tables["파일"].Columns.Add("file_name");
|
||||
ds.Tables["파일"].Columns.Add("chk");
|
||||
|
||||
File_info();
|
||||
|
||||
dataGridView1.DataSource = ds.Tables["파일"];
|
||||
|
||||
// 서버의 update_isbn.inf 파일에서 버전 추출
|
||||
FtpWebRequest fwr = (FtpWebRequest)WebRequest.Create("ftp://" + Login_id + "@" + Server_Ip + "/ISBN/Update_isbn.inf");
|
||||
fwr.Credentials = new NetworkCredential(Login_id, Login_pw);
|
||||
|
||||
fwr.Method = WebRequestMethods.Ftp.DownloadFile;
|
||||
|
||||
FtpWebResponse fr = (FtpWebResponse)fwr.GetResponse();
|
||||
StreamReader sr = new StreamReader(fr.GetResponseStream());
|
||||
|
||||
while (!sr.EndOfStream)
|
||||
{
|
||||
sLine = sr.ReadLine();
|
||||
i = sLine.IndexOf("count=", 0);
|
||||
|
||||
// 서버 버전 추출
|
||||
if(sLine.IndexOf("count=", 0) != -1)
|
||||
{
|
||||
Sr_Vers = sLine.Replace("count=", "");
|
||||
lbl_SerVer.Text = Sr_Vers;
|
||||
break;
|
||||
}
|
||||
}
|
||||
sr.Close();
|
||||
|
||||
// 버전이 같은 경우 버튼 변경
|
||||
if (Convert.ToDecimal(Sr_Vers) == Convert.ToDecimal(Cl_Vers))
|
||||
{
|
||||
btn_ok.Text = "프로그램 실행";
|
||||
|
||||
lbl_status.Text = "최신 버전입니다!";
|
||||
lbl_status.ForeColor = Color.Blue;
|
||||
|
||||
lbl_filename.Text = "";
|
||||
lbl_cnt.Text = "";
|
||||
|
||||
for(int a = 0; a < dataGridView1.Rows.Count; a++)
|
||||
{
|
||||
dataGridView1.Rows[a].Cells["update_status"].Value = "T";
|
||||
}
|
||||
|
||||
btn_ok_Click(null, null);
|
||||
}
|
||||
else if (Convert.ToDecimal(Sr_Vers) > Convert.ToDecimal(Cl_Vers))
|
||||
{
|
||||
btn_ok.Text = "업데이트";
|
||||
tf = true;
|
||||
|
||||
lbl_cnt.Text = "(1/" + dataGridView1.Rows.Count.ToString() + ")";
|
||||
lbl_status.Text = "업데이트가 존재합니다!";
|
||||
lbl_status.ForeColor = Color.DeepPink;
|
||||
}
|
||||
}
|
||||
catch(System.Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_ok_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (tf)
|
||||
{
|
||||
// 업데이트가 존재할 때
|
||||
download(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 업데이트가 없을 때
|
||||
string start_program = Application.StartupPath + "\\" + Start_Prg;
|
||||
Process prc = new Process();
|
||||
prc.StartInfo = new System.Diagnostics.ProcessStartInfo(start_program);
|
||||
prc.Start();
|
||||
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void download(int cnt)
|
||||
{
|
||||
if (cnt < Convert.ToInt32(lbl_Files.Text))
|
||||
{
|
||||
WebClient clnt = new WebClient();
|
||||
clnt.Credentials = new NetworkCredential(Login_id, Login_pw);
|
||||
|
||||
lbl_status.Text = "업데이트 진행중!";
|
||||
progressBar1.Value = (progressBar1.Maximum / Convert.ToInt32(lbl_Files.Text)) * (down_Count + 1);
|
||||
|
||||
lbl_filename.Text = dataGridView1.Rows[cnt].Cells["file_name"].Value.ToString();
|
||||
|
||||
dataGridView1.Rows[cnt].Cells["update_status"].Value = "T";
|
||||
lbl_cnt.Text = "(" + (cnt + 1).ToString() + "/" + (dataGridView1.Rows.Count).ToString() + ")";
|
||||
|
||||
File.Delete(Application.StartupPath + lbl_filename.Text);
|
||||
|
||||
clnt.DownloadFileAsync(new Uri("ftp://" + Login_id + "@" + Server_Ip + "/ISBN/" + lbl_filename.Text),
|
||||
Application.StartupPath + "\\" + lbl_filename.Text);
|
||||
|
||||
clnt.DownloadFileCompleted += new AsyncCompletedEventHandler(clnt_DownloadFileCompleted);
|
||||
}
|
||||
else
|
||||
{
|
||||
File_info();
|
||||
|
||||
progressBar1.Value = progressBar1.Maximum;
|
||||
btn_ok.Text = "프로그램 실행";
|
||||
|
||||
lbl_status.Text = "최신 파일입니다!";
|
||||
lbl_status.ForeColor = Color.Blue;
|
||||
|
||||
lbl_filename.Text = "";
|
||||
lbl_cnt.Text = "";
|
||||
tf = false;
|
||||
}
|
||||
}
|
||||
void clnt_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
|
||||
{
|
||||
down_Count += 1;
|
||||
download(down_Count);
|
||||
}
|
||||
|
||||
private void File_info()
|
||||
{
|
||||
// 클라이언트 파일 정보
|
||||
// update.inf 파일에서 파일개수, 파일명, 버전 추출
|
||||
StreamReader sr = new StreamReader(Application.StartupPath + "\\Update_isbn.inf");
|
||||
int i = -1;
|
||||
while(sr.EndOfStream != true)
|
||||
{
|
||||
sLine = sr.ReadLine();
|
||||
i = sLine.IndexOf("count=", 0);
|
||||
|
||||
// 버전 추출
|
||||
if (sLine.IndexOf("count=", 0) != -1)
|
||||
{
|
||||
Cl_Vers = sLine.Replace("count=", "");
|
||||
lbl_ClientVer.Text = Cl_Vers;
|
||||
}
|
||||
// 설치 경로 추출
|
||||
else if (sLine.IndexOf("server_url=", 0) != -1)
|
||||
{
|
||||
Server_Ip = sLine.Replace("server_url=", "");
|
||||
rtb_Ip.Text = Server_Ip;
|
||||
//rtb_Ip.Text = Application.StartupPath;
|
||||
}
|
||||
// 종료시 실행 파일
|
||||
else if (sLine.IndexOf("exe=", 0) != -1)
|
||||
{
|
||||
Start_Prg = sLine.Replace("exe=", "");
|
||||
}
|
||||
// 파일 개수 추출
|
||||
else if (sLine.IndexOf("Files=", 0) != -1)
|
||||
{
|
||||
Files_Count = Convert.ToInt32(sLine.Replace("Files=", ""));
|
||||
lbl_Files.Text = Files_Count.ToString();
|
||||
}
|
||||
else if(sLine.IndexOf("\\", 0) != -1)
|
||||
{
|
||||
str[0] = sLine.Replace("\\", "");
|
||||
str[1] = "F";
|
||||
ds.Tables["파일"].Rows.Add(str);
|
||||
}
|
||||
i = -1;
|
||||
}
|
||||
sr.Close();
|
||||
}
|
||||
|
||||
private void btn_Close_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user