- 论坛徽章:
- 0
|
求一银行实时代收费程序例子
- 代理前置程序
- main()
- {
- int m_socket, n_socket;
-
- //1-create a socket, then bind & listen
- m_socket = create_socket()
- if (m_socket < 0){
-
- }
-
- while (1) {
-
- n_socket = accept();
-
- switch(fork()) {
- case 0:
- close_socket(m_socket);
- process_child(n_socket, sRcvInfo);
- exit(0);
- case 1:
- close_socket(n_socket);
- break;
- default:
- perror("fork");
- exit(0);
- }
- }
- }
- proc_child(int socket, char *sRcvInfo)
- {
- char sType[];
- int iType;
-
- //接收请求信息
- s_read(socket, sRcvInfo);
-
- //得到代理类型
- splitRcvInfo(sRcvInfo, sType);
- iType = atoi(sTYpe);
-
- switch(iType) {
- case WATER_TYPE:
- proc_water(socket,sRcvInfo);
- break;
- case POWER_TYPE:
- proc_power(socket,sRcvInfo);
- break;
- case GAS_TYPE:
- proc_gas(socket, sRcvInfo);
- break;
- }
- return(0);
- }
- proc_water(int socket, char *sRcvInfo)
- {
- char sTxno[];
- int iTxno;
-
- //得到交易号
- splitMsgInfo(sRcvInfo, sTxno);
-
- //复制到全局变量
-
- switch(atoi(sTxno) {
- case 0001:
- pay_waterFee(socket);
- break;
- case 0002:
- inqu_waterFee(socket);
- break;
- default :
- printf("invaild txno\n");
- return(-1);
- }
- }
- pay_waterFee(int socket)
- {
- //向水公司发送缴费信息
- if (send_watePayInfo()) {
-
- }
-
- //向帐务主机发送扣款信息,如失败,向水公司发送回冲信息
- if (send_bankPayInfo()) {
- if (recever_waterPayInfo() {
- //如冲正失败插入异常表 }
- }
- return(0);
- }
复制代码
简单的例子,复杂点可以用消息队列,具体怎么办看业务量而定 |
|