📄 tpcall.c
字号:
#include <stdio.h>#include <string.h>#include "tpcall.h"int init_head( BANK_HEAD *ih){ memset( (char *)ih, '\0', sizeof( ih)) ; get_curr_date( ih->date) ; ih->ds[ 0] = '1' ; ih->flg[ 0] = 'S' ; strcpy( ih->serial, "01") ; strcpy( ih->dn, "00") ; ih->side[ 0] = 'T' ; return( 0) ;}int tpcall( char *host, int port, int timeout, int app, TRADE_PACK *tp){ FILE *fp ; char buf[ 2048 + 64 + 1], tmp[ 2048] ; char flg ; int offset ; int ret, mgid, i ; memset( buf, '\0', sizeof( buf)) ; offset = 0 ; memcpy( buf + offset, "|", 1) ; offset += 1 ; memcpy( buf + offset, tp->bk_h.date, 8) ; offset += 8 ; memcpy( buf + offset, tp->bk_h.ds, 1) ; offset += 1 ; memcpy( buf + offset, tp->bk_h.flg, 1) ; offset += 1 ; memcpy( buf + offset, tp->bk_h.serial, 2) ; offset += 2 ; memcpy( buf + offset, tp->bk_h.dn, 2) ; offset += 2 ; memcpy( buf + offset, tp->bk_h.side, 1) ; offset += 1 ; memcpy( buf + offset, tp->bk_h.zoneno, 5) ; offset += 5 ; memcpy( buf + offset, tp->bk_h.optcode, 4) ; offset += 4 ; memcpy( buf + offset, tp->bk_h.termno, 3) ; offset += 3 ; memcpy( buf + offset, tp->bk_h.agentid, 4) ; offset += 4 ; memcpy( buf + offset, tp->bk_h.retcode, 2) ; offset += 2 ; memcpy( buf + offset, tp->bk_h.id, 19) ; offset += 19 ; memcpy( buf + offset, tp->bk_h.remark, 7) ; offset += 7 ; memcpy( buf + offset, tp->bk_h.cflg, 1) ; offset += 1 ; memcpy( buf + offset, tp->bk_h.crc, 4) ; offset += 4 ; memcpy( buf + offset, tp->buf, tp->buflen) ; offset += tp->buflen ; flg = 'F' ; for ( i=0; ;i++ ) { if ( sl_tcpip( &mgid, &app, host, port, buf, &offset, flg, timeout) != 0 ) return( mgid) ; if ( flg == 'C' ) break ; tp->buflen = offset - 64 - 1 ; offset = 0 ; offset += 1 ; memcpy( tp->bk_h.date, buf + offset, 8) ; offset += 8 ; memcpy( tp->bk_h.ds, buf + offset, 1) ; offset += 1 ; memcpy( tp->bk_h.flg, buf + offset, 1) ; offset += 1 ; memcpy( tp->bk_h.serial, buf + offset, 2) ; offset += 2 ; memcpy( tp->bk_h.dn, buf + offset, 2) ; offset += 2 ; memcpy( tp->bk_h.side, buf + offset, 1) ; offset += 1 ; memcpy( tp->bk_h.zoneno, buf + offset, 5) ; offset += 5 ; memcpy( tp->bk_h.optcode, buf + offset, 4) ; offset += 4 ; memcpy( tp->bk_h.termno, buf + offset, 3) ; offset += 3 ; memcpy( tp->bk_h.agentid, buf + offset, 4) ; offset += 4 ; memcpy( tp->bk_h.retcode, buf + offset, 2) ; offset += 2 ; memcpy( tp->bk_h.id, buf + offset, 19) ; offset += 19 ; memcpy( tp->bk_h.remark, buf + offset, 7) ; offset += 7 ; memcpy( tp->bk_h.cflg, buf + offset, 1) ; offset += 1 ; memcpy( tp->bk_h.crc, buf + offset, 4) ; offset += 4 ; switch( tp->bk_h.flg[ 0] ) { case 'S' : flg = 'C' ; memcpy( tp->buf, buf + offset, tp->buflen) ; break ; case 'F' : flg = 'M' ; memcpy( tp->buf, buf + offset, tp->buflen) ; break ; case 'M' : flg = 'M' ; if ( (fp=fopen( tp->filename, "ab+")) == NULL ) { unlink( tp->filename) ; break ; } memset( tmp, '\0', sizeof( tmp ) ); memcpy( tmp, buf + offset, tp->buflen); fprintf( fp, "%s", tmp) ; fclose( fp) ; break ; case 'L' : flg = 'C' ; if ( (fp=fopen( tp->filename, "ab+")) == NULL ) { unlink( tp->filename) ; break ; } memset( tmp, '\0', sizeof( tmp ) ); memcpy( tmp, buf + offset, tp->buflen); fprintf( fp, "%s", tmp) ; fclose( fp) ; break ; } } return( 0) ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -