📄 testjtyhdlg.cpp
字号:
// TestJtyhDlg.cpp : implementation file
//
#include "stdafx.h"
#include <io.h>
#include "stdio.h"
#include "stdlib.h"
#include "TestJtyh.h"
#include "TestJtyhDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestJtyhDlg dialog
CTestJtyhDlg::CTestJtyhDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestJtyhDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestJtyhDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTestJtyhDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestJtyhDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTestJtyhDlg, CDialog)
//{{AFX_MSG_MAP(CTestJtyhDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestJtyhDlg message handlers
BOOL CTestJtyhDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CTestJtyhDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CTestJtyhDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CTestJtyhDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CTestJtyhDlg::OnButton1()
{
SOCKET sockfd;
char cIpaddress[16];
char cPort[6];
strcpy(cIpaddress,"127.0.0.1");
strcpy(cPort,"7000");
int socketport = atoi(cPort);
struct sockaddr_in serv_addr;
memset((char *)&serv_addr,0,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr(cIpaddress);
serv_addr.sin_port=htons(socketport);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (SOCKET_ERROR == sockfd)
{
return ;
}
int rval = bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) ;
listen ( sockfd, 5 );
int newsock, childpid, cliaddrlen, retVal, msgSndKey;
struct sockaddr_in cliaddr;
cliaddrlen = sizeof cliaddr;
memset ( &cliaddr, 0x00, cliaddrlen );
newsock = accept ( sockfd, ( struct sockaddr * ) & cliaddr, &cliaddrlen );
if ( newsock < 0 )
{
}
Truning(newsock);
shutdown(newsock,0x02);
closesocket(newsock);
shutdown(sockfd,0x02);
closesocket(sockfd);
}
int CTestJtyhDlg::Truning(int sockfd)
{
int retVal;
char buffer[4096];
char datalen[5];
PACKSTRUCT packstruct;
memset((char *)&buffer,0x00,sizeof(buffer));
int readLen;
readLen=recv(sockfd,buffer,sizeof(PACKSTRUCT),0);
memcpy((char *)&packstruct,buffer,sizeof(packstruct));
char tmpStr[80];
char Jydm[10];
memset(Jydm,0x00,sizeof(Jydm));
memset(tmpStr,0x00,sizeof(tmpStr));
memcpy(Jydm,packstruct.m_Jydm,sizeof(packstruct.m_Jydm));
memset(buffer,0x00,sizeof(buffer));
//转化请求包
int len = exchange_reqpack(Jydm,&packstruct,buffer);
int Bank_sock = TcpCliSockInit( "8000", inet_addr("127.0.0.1") );
//send(Bank_sock, (LPSTR)buffer, len, 0);
int rtnVal = write(Bank_sock,(unsigned char*)buffer,len);
//retVal = WriteData( Bank_sock, (unsigned char*)buffer, len, 2);
memset(buffer,0x00,sizeof(buffer));
retVal = ReadSlot (Bank_sock, buffer,8096, 25);
/*
//SOCKET Bank_sock = NextSocket_Connect("127.0.0.1","8000");
//向银行发送请求报文
retVal = send(Bank_sock, (LPSTR)buffer, len, 0);
//接收银行报文
retVal = recv(Bank_sock,(LPSTR)buffer, len, 0);
*/
//转化结果包
len = exchange_anspack(Jydm,&packstruct,buffer);
//回写结果包
retVal = WriteData( sockfd, (unsigned char*)&packstruct, sizeof(packstruct), 15);
shutdown(Bank_sock,0x02);
closesocket(Bank_sock);
shutdown(sockfd,0x02);
closesocket(sockfd);
return 0;
}
int CTestJtyhDlg::exchange_reqpack(char *jydm, PACKSTRUCT *pack, char *buff)
{
int retVal = 0;
char tmpStr[80];
memset(tmpStr,0x00,sizeof(tmpStr));
int nCode = atoi(jydm);
switch( nCode )
{
case 1000://申请 KEY apply_work_key
retVal=Function_Down_WorkKey(pack,buff);
break;
case 4800://身份核对
//retVal=Function_SFZKK_ReqPack(&packstruct);
break;
case 3003://开卡数查询
//retVal=Function_CxKks_ReqPack(&packstruct);
break;
case 3002://查询客户资料
retVal=Function_SearchCustom_ReqPack(pack,buff);
break;
case 3004://录入客户资料
retVal=Function_JLKHZL_ReqPack(pack,buff);
break;
case 3000://开卡交易请求(PACKSTRUCT *vpack, char *vbuff)
retVal=Function_SFZKK_ReqPack(pack,buff);
break;
case 3130://柜员密码校验(031300)
//retVal=Function_SFZKK_ReqPack(&packstruct);
break;
case 4722://自助机具装卡确认(047220)
retVal=Function_ZK_ReqPack(pack,buff);
break;
case 4723://自助机具清卡登记(047230)
retVal=Function_QK_ReqPack(pack,buff);
break;
case 4727://卡片状态查询(047270)
//retVal=Function_CxKks_ReqPack(pack,buff);
break;
case 4728://自助废卡表外付出(047280)
retVal=Function_Bwfc_ReqPack(pack,buff);
break;
case 4729://废卡内部销卡(047290)
retVal=Function_Nbxk_ReqPack(pack,buff);
break;
default :
break;
}
return retVal;
}
int CTestJtyhDlg::exchange_anspack(char *jydm, PACKSTRUCT *pack, char *buff)
{
char tmpStr[80];
int retVal = 0;
memset(tmpStr,0x00,sizeof(tmpStr));
strcpy(jydm,tmpStr);
int nCode = atoi(tmpStr);
switch( nCode )
{
case 1000://申请 KEY apply_work_key
retVal=Function_Down_ansWorkKey(pack,buff);
break;
case 3003://开卡数查询
//retVal=Function_CxKks_AnsPack(pack, buff);
break;
case 3002://查询客户资料 011855
retVal=Function_SearchCustom_AnsPack(pack, buff);
break;
case 3004://录入客户资料
retVal=Function_JLKHZL_AnsPack(pack, buff);
break;
case 3000://开卡交易请求
retVal=Function_SFZKK_AnsPack(pack, buff);
break;
case 3130://柜员密码校验(031300)
//retVal=Function_SFZKK_AnsPack(&packstruct);
break;
case 4722://自助机具装卡确认(047220)
retVal=Function_ZK_AnsPack(pack,buff);
break;
case 4723://自助机具清卡登记(047230)
retVal=Function_QK_AnsPack(pack,buff);
break;
case 4727://卡片状态查询(047270)
//retVal=Function_CxKks_AnsPack(pack,buff);
break;
case 4728://自助废卡表外付出(047280)
retVal=Function_Bwfc_AnsPack(pack,buff);
break;
case 4729://废卡内部销卡(047290)
retVal=Function_Nbxk_AnsPack(pack,buff);
break;
case 4800://身份核对
//retVal=Function_SFZKK_AnsPack(&packstruct);
break;
default :
break;
}
return 0;
}
int CTestJtyhDlg::Function_SearchCustom_ReqPack(PACKSTRUCT *vpack, char *vbuff)
{
int len = 0;
char tmpStr[80];
int retVal =0;
REQHEAD reqhead;
REQ_BODY_KHXXCX reqbody;
memset((char *)&reqhead,0x00,sizeof(reqhead));
memset((char *)&reqbody,0x00,sizeof(reqbody));
/***********************************head*********************************************/
memcpy(reqhead.TIAFILLER,"TLU6",4);
memcpy(reqhead.TIAAPCODE,"01",2);
memcpy(reqhead.TIATRCODE,"1855",4);
memcpy(reqhead.TIAFECODE,"011855",6); // 前置机号 前置交易码,用于双交易码
memcpy(reqhead.TIATMSEQNO,"TERM099",7); //终端号
memcpy(reqhead.TIATXTYPE,"WEB99",5);//交易来源,填'WEB99'
memcpy(reqhead.TIATXSEQ,"000000000000000",15);//[15]填网银凭证号
memcpy(reqhead.TIATLID,"0000000",7);//[7]虚拟柜员号
reqhead.TIAREQTYPE[0] = 'T';
/*************************可不填
reqhead.TIAAUTH[2];
reqhead.TIASUP1ID[7];
reqhead.TIASUP2ID[7];
reqhead.TIASUP1PSW[6];
reqhead.TIASUP2PSW[6];
reqhead.TIASUP1DEV[1];
reqhead.TIASUP2DEV[1];
//char TIAAUTHRESNTBL Occur 10 I???????????????????
reqhead.TIAAUTHRESNTBL[10];
reqhead.TIAAUTHRESN[6];
reqhead.TIAAUTHLOG[1];
reqhead.TIAJRNNO[9];
*/
reqhead.TIACOMPIND[1]='0';
reqhead.TIAENCRIND[1]='0';
/*
reqhead.TIATRBR[6];
reqhead.TIATLLVL[1];
reqhead.TIAVERNO[8];
reqhead.TIAOUTERTLR[1];
reqhead.m_TIAFILLER[2];
*/
//char TIATRDATA[2048];
/*********************************body*************************************/
memcpy(reqbody.zjlx,"15",2);
memset( tmpStr, 0x00, sizeof( tmpStr ) );
retVal = GetValue( vpack->m_Data, tmpStr, 8, 0x01 );
alltrimSpace(tmpStr);
if(strlen(tmpStr)<=20)
{
strcpy( reqbody.zjhm, tmpStr );//证件号码
}
else
{
memset((char *)&reqbody.zjhm,0x00,sizeof(reqbody.zjhm));
}
reqbody.mmjybz[0] = '1';
reqbody.bz[0]='1';
memcpy(vbuff,(char *)&reqhead,sizeof(reqhead));
memcpy(vbuff+sizeof(reqhead),(char *)&reqbody,sizeof(reqbody));
len = sizeof(reqhead)+sizeof(reqbody);
return len;
}
int CTestJtyhDlg::Function_SearchCustom_AnsPack(PACKSTRUCT *vpack, char *vbuff)
{
int len = 0;
char tmpStr[80];
ANS_BODY_KHXXCX ans;
memset((char *)&ans,0x00,sizeof(ans));
memset((char *)&ans,0x00,sizeof(ans));
memcpy((char *)&ans,vbuff,sizeof(ans));
memset(tmpStr,0x00,sizeof(tmpStr));
memcpy(tmpStr,(char *)&ans.head.TOAMSGCODE,sizeof(ans.head.TOAMSGCODE));
// 判断结果
if(memcmp(tmpStr,"0000",4)==0)// 成功
{
int iLen=0;
memcpy(vpack->m_Fhdm,"0000",sizeof(vpack->m_Fhdm));
memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
//客户号
memset(tmpStr,0x00,sizeof(tmpStr));
memcpy(tmpStr,(char *)&ans.custom,sizeof(ans.custom));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -