⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhdzjskh.java

📁 JAVA实现的SOCKET通讯源码,里面有双方制定的报文标示!
💻 JAVA
字号:
package testDzjs.yhServer.appInstance;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;

import testDzjs.yhServer.com.SendReceive;
import testDzjs.yhServer.com.YHBuildProtocol;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2005-4-16
 * Time: 22:50:47
 * To change this template use File | Settings | File Templates.
 */

/**
 * 个体开户
 */
public class DhDzjsKh implements YhInterface{

    SendReceive sendReceive = new SendReceive(); //数据发送接收实例

    YHBuildProtocol buildProtocol = new YHBuildProtocol(); //协议构造

    Socket socket = null; //套接字

    BufferedInputStream in = null; //输入流

    BufferedOutputStream out = null; //输出流

    //请求包
    private String packageType = "03"; //包类型
    private String nsrZl = "1"; //纳税人种类 1个体户  2单位
    private String nsrbm = ""; //纳税人编码
    private String dnbm = ""; //电脑编码   区域分段(2)+银行分段(1)+ 序号(5)
    private String sbmm = ""; //申报密码
    private String yhdm = ""; //银行代码  01工行  02农行   03中行  04建行
    private String zhlx = ""; //帐号类型  1结算账户 2信用卡  3储蓄卡
    private String nsrmc = ""; //纳税人名称
    private String sfzhm = ""; //身份证号码
    private String dhhm = "" ; //联系电话
    private String swjg_dm = "";//税务机关代码

    //请求包


    //返回包
    private String rPackageType = "04"; //包类型
    private String bz = ""; //标志 00成功   01无此银行帐号  02已登记 03身份证错  04开户余额不足 05纳税人编码不存在 06余额不足 07已销户 08帐户状态错 09无此交易 10无此征收机关编码 11银行系统忙 12身份证号码错  13补登存 14交易流水号  99其它
    private String rnsrbm = ""; //纳税人编码
    private String rswjgdm = "";//税务机关代码
    //返回包

    //请求包长度
    private int[] sendLength = {2,1,20,8,6,2,1,80,20,20,11};

    //返回包长度
    private int[] receiveLength = {2,2,20,11};
    private int rLength = 35;

    //返回包
    String[] receive = new String[4];

    private long sCount = 0;


    /**
     * 外部调用入口
     * @param socket
     * @param in
     * @param out
     */
    public void start(Socket socket,BufferedInputStream in,BufferedOutputStream out,long l){
        this.sCount = l;
        this.socket = socket;
        this.in = in;
        this.out = out;
        run();
    }

    public void setNsrbm(String s){
        this.nsrbm = s;
    }
    public void setSwjgdm(String s){
        this.swjg_dm = s;
    }
    public void setNsrmc(String s){
        this.nsrmc = s;
    }

    /**
     * 处理流程
     */
    public void run(){
        khcl();
        sender(buildSendBody());
        parseReceiver(receiver());
        jgcl();
    }

    public String getInfo(){
        return "";
    }

    /**
     * 开户处理
     * 生成开户包的值
     */
    private void khcl(){
        String tmp = "";
        tmp ="01020001" +  sCount;
//        nsrbm = "430526197108193266";
        dnbm = tmp.substring(tmp.length() - 8);
        sbmm = "888888"; //申报密码
        yhdm = "02"; //银行代码  01工行  02农行   03中行  04建行
        zhlx = "1"; //帐号类型  1结算账户 2信用卡  3储蓄卡
//        nsrmc = "毛香莲"; //纳税人名称
        sfzhm = nsrbm; //身份证号码
        dhhm = "9988001" ; //联系电话
//        swjg_dm = "14305810000";//税务机关代码

    }

    /**
     * 开户结果处理
     * 校验开户是否成功
     */
    private void jgcl(){
//         rPackageType = this.receive[0]; //包类型
//        bz = this.receive[1]; //标志 00成功   01无此银行帐号  02已登记 03身份证错  04开户余额不足 05纳税人编码不存在 06余额不足 07已销户 08帐户状态错 09无此交易 10无此征收机关编码 11银行系统忙 12身份证号码错  13补登存 14交易流水号  99其它
//        rnsrbm = this.receive[2]; //纳税人编码
//        rswjgdm = this.receive[3];//税务机关代码
    }

    /**
     * 生成请求开户包
     * @return
     */
    private byte[] buildSendBody(){
        byte[] body;
        String[] send = {packageType,nsrZl,nsrbm,dnbm,sbmm,yhdm,zhlx,nsrmc,sfzhm,dhhm,swjg_dm};
//        body = buildProtocol.getProtocolDataDH(send,sendLength);
        body = buildProtocol.getProtocolData(send,sendLength);
        return body;
    }

    /**
     * 向输出流发送数据
     * @param message
     */
    private void sender(byte[] message){
        try {
            sendReceive.sendByte(message,out);
        } catch (IOException e) {
            try {
                this.socket.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }
    }

    /**
     * 从输入流读取数据
     * @return
     */
    private String receiver(){
        String receive = "";
        try {
//            receive = sendReceive.receiveDH(in,rLength);
            receive = sendReceive.receive(in);
            this.socket.close();
        } catch (IOException e) {
            try {
                this.socket.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }
        System.out.println(DbYh.threadCount + "收到税局开户返回包:" + receive);
        return receive;
    }

    /**
     * 解析返回包
     * @param receive
     */
    private void parseReceiver(String receive){
        int  startx = 0;
        for(int i = 0;i < receiveLength.length;i ++){
            this.receive[i] = readString(receive,startx,receiveLength[i]);
            startx += receiveLength[i];
        }
        rPackageType = this.receive[0]; //包类型
        bz = this.receive[1]; //标志 00成功   01无此银行帐号  02已登记 03身份证错  04开户余额不足 05纳税人编码不存在 06余额不足 07已销户 08帐户状态错 09无此交易 10无此征收机关编码 11银行系统忙 12身份证号码错  13补登存 14交易流水号  99其它
        rnsrbm = this.receive[2]; //纳税人编码
        rswjgdm = this.receive[3];//税务机关代码

    }

    /**
     * 字串读取
     * @param str
     * @param startx
     * @param length
     * @return
     */
    private String readString(String str,int startx,int length){
        return str.substring(startx,startx+length);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -