Files
interactive/application/sp-console(down)/ConsoleApp(DN)/DistInfoDlg.cpp
T
2026-08-07 17:38:18 +09:00

194 lines
4.5 KiB
C++

// DistInfoDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "ConsoleApp.h"
#include "DistInfoDlg.h"
#include ".\distinfodlg.h"
#include "../ConsoleTransfer(DN)/NoticeStruct.h"
#include "../CommLib/CommLib.h"
// CDistInfoDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CDistInfoDlg, CDialog)
CDistInfoDlg::CDistInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDistInfoDlg::IDD, pParent)
, m_dist_path(_T(""))
, m_file_cnt(_T(""))
, m_dist_complete(_T(""))
, m_dist_now(_T(""))
, m_dist_fail(_T(""))
{
}
CDistInfoDlg::~CDistInfoDlg()
{
}
void CDistInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_DIST_PATH, m_dist_path);
DDX_Text(pDX, IDC_FILE_CNT, m_file_cnt);
DDX_Text(pDX, IDC_DIST_COMPLETE, m_dist_complete);
DDX_Text(pDX, IDC_DIST_NOW, m_dist_now);
DDX_Text(pDX, IDC_DIST_FAIL, m_dist_fail);
}
BEGIN_MESSAGE_MAP(CDistInfoDlg, CDialog)
END_MESSAGE_MAP()
// CDistInfoDlg 메시지 처리기입니다.
BOOL CDistInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 여기에 추가 초기화 작업을 추가합니다.
GetDistInfo();
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}
void CDistInfoDlg::GetDistInfo(void)
{
tsvc_req_header_t tsvc_req_header;
tsvc_auth_info_t auth_req_body;
tsvc_ddi_req_body_t ddi_req_body;
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
tsvc_ddi_rsp_body_t *ddi_rsp_body_ptr;
char recv_buffer[8196];
int result_code;
CString ip;
// get auth string /////////////////////////
CString auth_str;
auth_str = this->m_cp + "@" + this->m_user;
///////////////////////////////////////////
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
goto EXIT_FUNCTION;
}
bool bRet = false;
DWORD dwWritten;
char s[1024];
sockaddr_in sa;
sa.sin_family = AF_INET;
ip = m_sutil.get_first_rcts(this->m_RCTSAddress);
if (ip.GetLength()>0)
sa.sin_addr.s_addr = m_sutil.conv_addr(ip.GetString());
else
goto EXIT_FUNCTION;
sa.sin_port = htons(RCTS_NOTICE_PORT);
connect(sock, (SOCKADDR*)&sa, sizeof(sa));
tsvc_req_header.op_num_w = ::htons(OP_NUM_AUTH);
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
::sprintf(auth_req_body.ua_str, auth_str);
::sprintf(auth_req_body.up_str, this->m_passwd);
m_sutil._sh_send(sock, (char*)&tsvc_req_header, sizeof(tsvc_req_header));
m_sutil._sh_send(sock, (char*)&auth_req_body, sizeof(auth_req_body));
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
if (m_sutil._rtxTimer(5 , sock) < 0)
goto EXIT_FUNCTION;
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
// 인증
if (RSP_CODE_AUTH_SUCCESS==result_code)
{
// SetNoticeStep(200);
}
else
{
// SetNoticeStep(201);
goto EXIT_FUNCTION;
}
tsvc_req_header.op_num_w = ::htons(OP_NUM_DDI);
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
::sprintf(ddi_req_body.uri_str, "%s", this->m_dist_path);
m_sutil._sh_send(sock,(char *)&tsvc_req_header, sizeof(tsvc_req_header));
m_sutil._sh_send(sock,(char *)&ddi_req_body, sizeof(ddi_req_body));
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
if (m_sutil._rtxTimer(5 , sock) < 0)
goto EXIT_FUNCTION;
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(tsvc_rsp_header_t));
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
// 배포정보
if (RSP_CODE_DIST_SUCCESS==result_code)
{
// SetNoticeStep(200);
}
else
{
// SetNoticeStep(201);
goto EXIT_FUNCTION;
}
memset(&recv_buffer , 0x00 , sizeof(recv_buffer));
if (m_sutil._rtxTimer(5 , sock) < 0)
goto EXIT_FUNCTION;
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(tsvc_ddi_rsp_body_t));
ddi_rsp_body_ptr = reinterpret_cast<tsvc_ddi_rsp_body_t *>(&recv_buffer);
char t[128];
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->file_cnt));
m_file_cnt = t;
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->dist_fail));
m_dist_fail = t;
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->dist_now));
m_dist_now = t;
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->dist_complete));
m_dist_complete = t;
//배포
if (RSP_CODE_DIST_SUCCESS==result_code)
{
// SetNoticeStep(400);
}
else
{
// SetNoticeStep(401);
goto EXIT_FUNCTION;
}
EXIT_FUNCTION:
if (sock != INVALID_SOCKET)
closesocket(sock);
// PostMessage(WM_CLOSE);
}