📄 testjtyhdlg.cpp
字号:
int len = 0;
char tmpStr[80];
int retVal =0;
REQHEAD reqhead;
REQ_BODY_NBXK reqbody;
memset((char *)&reqhead,0x00,sizeof(reqhead));
memset((char *)&reqbody,0x00,sizeof(reqbody));
/***********************************head*********************************************/
memcpy(reqhead.TIAFILLER,"TLU6",4);
memcpy(reqhead.TIAAPCODE,"04",2);
memcpy(reqhead.TIATRCODE,"7290",4);
memcpy(reqhead.TIAFECODE,"047290",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*************************************/
memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
memset( tmpStr, 0x00, sizeof( tmpStr ) );
retVal = GetValue( vpack->m_Data, tmpStr, 1, 0x01 );
alltrimSpace(tmpStr);
strcpy(reqbody.gyh,tmpStr);
memset( tmpStr, 0x00, sizeof( tmpStr ) );
retVal = GetValue( vpack->m_Data, tmpStr, 2, 0x01 );
alltrimSpace(tmpStr);
strcat(reqbody.cardnum,tmpStr);
memcpy(vbuff,(char *)&reqhead,sizeof(reqhead));
memcpy(vbuff+sizeof(reqhead),(char *)&reqbody,sizeof(reqbody));
len = sizeof(reqhead)+sizeof(reqbody);
return len;
}
int CTestJtyhDlg::Function_Nbxk_AnsPack(PACKSTRUCT *vpack, char *vbuff)
{
int len = 0;
char tmpStr[80];
ANS_BODY_KHZLJL 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));
strcpy(vpack->m_Data, " ");
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
strcat(vpack->m_Data, " ");
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
//填包数据区长
memset(tmpStr,0x00,sizeof(tmpStr));
memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
iLen = strlen(vpack->m_Data);
sprintf(tmpStr, "%04d", iLen);
memcpy(vpack->m_DataLen, tmpStr, 4);
return 0;
}
else
{
int iLen=0;
memcpy(vpack->m_Fhdm,"9999",sizeof(vpack->m_Fhdm));
memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
//客户号
strcpy(vpack->m_Data,"9999" );
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
strcat(vpack->m_Data, "内部销卡失败");
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
//填包数据区长
memset(tmpStr,0x00,sizeof(tmpStr));
memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
iLen = strlen(vpack->m_Data);
sprintf(tmpStr, "%04d", iLen);
memcpy(vpack->m_DataLen, tmpStr, 4);
return 0;
}
}
//表外付出047280
int CTestJtyhDlg::Function_Bwfc_ReqPack(PACKSTRUCT *vpack, char *vbuff)
{
int len = 0;
char tmpStr[80];
int retVal =0;
REQHEAD reqhead;
REQ_BODY_BWFC reqbody;
memset((char *)&reqhead,0x00,sizeof(reqhead));
memset((char *)&reqbody,0x00,sizeof(reqbody));
/***********************************head*********************************************/
memcpy(reqhead.TIAFILLER,"TLU6",4);
memcpy(reqhead.TIAAPCODE,"04",2);
memcpy(reqhead.TIATRCODE,"7280",4);
memcpy(reqhead.TIAFECODE,"047280",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*************************************/
memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
memset( tmpStr, 0x00, sizeof( tmpStr ) );
retVal = GetValue( vpack->m_Data, tmpStr, 1, 0x01 );
alltrimSpace(tmpStr);
strcpy(reqbody.gyh,tmpStr);
memset( tmpStr, 0x00, sizeof( tmpStr ) );
retVal = GetValue( vpack->m_Data, tmpStr, 2, 0x01 );
alltrimSpace(tmpStr);
strcat(reqbody.cardnum,tmpStr);
memcpy(vbuff,(char *)&reqhead,sizeof(reqhead));
memcpy(vbuff+sizeof(reqhead),(char *)&reqbody,sizeof(reqbody));
len = sizeof(reqhead)+sizeof(reqbody);
return len;
}
int CTestJtyhDlg::Function_Bwfc_AnsPack(PACKSTRUCT *vpack, char *vbuff)
{
int len = 0;
char tmpStr[80];
ANS_BODY_KHZLJL 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));
strcpy(vpack->m_Data, " ");
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
strcat(vpack->m_Data, " ");
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
//填包数据区长
memset(tmpStr,0x00,sizeof(tmpStr));
memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
iLen = strlen(vpack->m_Data);
sprintf(tmpStr, "%04d", iLen);
memcpy(vpack->m_DataLen, tmpStr, 4);
return 0;
}
else
{
int iLen=0;
memcpy(vpack->m_Fhdm,"9999",sizeof(vpack->m_Fhdm));
memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
strcpy(vpack->m_Data,"9999" );
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
strcat(vpack->m_Data, "表外付出失败");
iLen = strlen(vpack->m_Data);
vpack->m_Data[iLen] = 0x01;
//填包数据区长
memset(tmpStr,0x00,sizeof(tmpStr));
memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
iLen = strlen(vpack->m_Data);
sprintf(tmpStr, "%04d", iLen);
memcpy(vpack->m_DataLen, tmpStr, 4);
return 0;
}
}
SOCKET CTestJtyhDlg::NextSocket_Connect(char *cIpaddress, char *cPort)
{
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);
if((sockfd_Bank=socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
return SOCKET_ERROR;
}
//if (SOCKET_ERROR == setsockopt(sockfd, SOL_SOCKET, SO_LINGER,(char *)&nTimeOut,sizeof(nTimeOut))
// || SOCKET_ERROR == setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO,(char *)&nTimeOut,sizeof(nTimeOut)))
//{
//CloseSocket(sockfd);
// return SOCKET_ERROR;
//}
if(connect(sockfd_Bank, (struct sockaddr *)(& serv_addr), sizeof(serv_addr)) == SOCKET_ERROR)
{
//CloseSocket(sockfd);
return SOCKET_ERROR;
}
else
{
return sockfd_Bank;
}
}
int CTestJtyhDlg::TcpCliSockInit ( char *portName, unsigned long address )
{
int csocket;
int rval = -1, timeOut=5, elapsedTime = 0;
time_t startTime, endTime;
void (*OldAction)( int );
struct sockaddr_in addr;
startTime = time( NULL );
csocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if( csocket < 0 )
{
return -1;
}
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = address;
addr.sin_port = htons( atoi ( portName ) );
while( (elapsedTime < timeOut) && ( rval == -1 ) )
{
rval = connect( csocket,(struct sockaddr*)&addr,sizeof(addr) );
if( rval == 0 )
return csocket;
else
{
closesocket(csocket);
csocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if ( csocket < 0)
return -1;
}
endTime = time( NULL );
elapsedTime = endTime - startTime;
}
return csocket;
}
int CTestJtyhDlg::TcpServSockInit(char *portName, unsigned long address)
{
int sock, length, rval, i;
struct sockaddr_in serverAddr;
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock < 0)
return -2;
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_port = htons( atoi( portName ) );
i=1;
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(const char*)&i,sizeof(i));
rval = bind(sock, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) ;
if ( rval<0 )
return -3;
return sock;
}
int CTestJtyhDlg::TcpSockListen( int sock )
{
return ( listen ( sock, 15 ) ) ;
}
int CTestJtyhDlg::IsReadyToRead(int sock,int timeOut )
{
struct timeval tv;
struct timeval * ptv;
fd_set ready;
int rtnVal, len;
if ( timeOut != 0 )
{
tv.tv_sec = timeOut;
tv.tv_usec = 0;
ptv = &tv;
}else
{
ptv = 0;
}
FD_ZERO(&ready);
FD_SET(sock, &ready);
rtnVal = select(sock + 1, &ready, 0, 0, ptv);
switch ( rtnVal )
{
case 0: return FALSE;
case -1:return FALSE;
}
if ( FD_ISSET(sock,&ready) )
return TRUE;
return FALSE;
}
int CTestJtyhDlg::IsReadyToWrite(int sock,int timeOut )
{
struct timeval tv;
struct timeval * ptv;
fd_set ready;
int rtnVal, len;
if ( timeOut != 0 )
{
tv.tv_sec = timeOut;
tv.tv_usec = 0;
ptv = &tv;
}
else
{
ptv = 0;
}
FD_ZERO(&ready);
FD_SET(sock, &ready);
rtnVal = select(sock + 1, 0,&ready, 0, ptv);
switch ( rtnVal )
{
case 0: return FALSE;
case -1:return FALSE;
}
if ( FD_ISSET(sock,&ready) )
return TRUE;
return FALSE;
}
int CTestJtyhDlg::WriteData( int sock, unsigned char* buf, int length, int timeOut)
{
int rtnVal, len, counter,wantLen;
counter = 0;
wantLen = length ;
while ( counter != length )
{
if ( IsReadyToWrite(sock,timeOut ) )
{
rtnVal = write(sock,buf + counter,wantLen);
if ( rtnVal == -1 )
{
}
counter += rtnVal ;
wantLen = length - counter;
}
else
return -1;
}
return (counter);
}
int CTestJtyhDlg::ReadSlot( int sock, char *slotBuff, int maxsz, int timeOut )
{
int rtnVal, length, counter, wantLen;
counter = 0;
wantLen = maxsz ;
if ( IsReadyToRead ( sock, timeOut ) )
{
rtnVal = read(sock, slotBuff+counter, wantLen );
return rtnVal;
}
else
{
return -1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -