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

📄 synsocket.jad

📁 短信开发汇总
💻 JAD
字号:
// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov  Date: 2005-9-2 7:24:48
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   SynSocket.java

package smsproc.protocol.sgip;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import smsproc.util.ByteUtility;

// Referenced classes of package smsproc.protocol.sgip:
//            SGIP_Bind, DataBuffer, SGIP_BindResp, MD5, 
//            GlobalVar, ErrorCode, SGIP_Head

public class SynSocket
{

    public SynSocket()
    {
        socket = null;
        out = null;
        in = null;
    }

    public DataOutputStream getDataOutputStream()
    {
        return out;
    }

    public int ConnectServer()
    {
        if(GlobalVar.getLocalIP().equals(""))
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", "local ip address err", 0);
            return -1;
        }
        if(GlobalVar.getGatewayIP().equals(""))
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", "gateway ip address err", 0);
            return -1;
        }
        if(GlobalVar.getLocalPort() == 0)
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", "local port address err", 0);
            return -1;
        }
        if(GlobalVar.getGatewayPort() == 0)
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", "gateway port address err", 0);
            return -1;
        }
        try
        {
            InetAddress serverAddr = InetAddress.getByName(GlobalVar.getGatewayIP());
            InetAddress localAddr = InetAddress.getByName(GlobalVar.getLocalIP());
            socket = new Socket(serverAddr, GlobalVar.getGatewayPort(), localAddr, GlobalVar.getLocalPort());
        }
        catch(Exception ex)
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", ex, 0);
            return -1;
        }
        if(socket == null)
        {
            GlobalVar.WriteSysLog("SynSocket", "ConnectServer", "new operation return null", 0);
            return -1;
        }
        try
        {
            out = new DataOutputStream(socket.getOutputStream());
        }
        catch(Exception ex)
        {
            GlobalVar.WriteSysLog("SynSocket", "ConnectServer", ex, 0);
            return -1;
        }
        if(out == null)
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", "out is null", 0);
            return -1;
        }
        try
        {
            in = new DataInputStream(socket.getInputStream());
        }
        catch(Exception ex)
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", ex, 0);
            return -1;
        }
        if(in == null)
        {
            GlobalVar.WriteSysLog("Synsocket", "ConnectServer", "in is null", 0);
            return -1;
        } else
        {
            return 0;
        }
    }

    public int FlushOutputData()
    {
        try
        {
            out.flush();
        }
        catch(Exception ex)
        {
            GlobalVar.WriteSysLog("Synsocket", "FlushOutputData", ex, 0);
            return -1;
        }
        return 0;
    }

    public int setSoTimeout(int seconds)
    {
        try
        {
            socket.setSoTimeout(seconds * 1000);
        }
        catch(Exception ex)
        {
            GlobalVar.WriteSysLog("Synsocket", "setsotimeout", ex, 0);
            return -1;
        }
        return 0;
    }

    public int synRecvData(DataBuffer buffer)
    {
        int len = 0;
        int PacketLen;
        do
        {
            do
            {
                if(buffer.getBufferLen() >= 4)
                    break;
                try
                {
                    System.out.print("eee" + in + "\n");
                    len = in.read(buffer.getRecvBuffer(), 0, 20);
                }
                catch(InterruptedIOException ex)
                {
                    GlobalVar.WriteSysLog("Synsocket", "synRecvData", ex, 0);
                }
                catch(Exception ex)
                {
                    GlobalVar.WriteSysLog("Synsocket", "synRecvData", ex, 0);
                    return -1;
                }
                if(len == -1 || len == 0)
                {
                    GlobalVar.WriteSysLog("Synsocket", "SynRecvData", "first read data len is -1", 0);
                    return -1;
                }
                len += buffer.getBufferLen();
                buffer.setBufferLen(len);
            } while(len < 4);
            PacketLen = 0;
            DataInputStream data = new DataInputStream(new ByteArrayInputStream(buffer.getBuffer()));
            try
            {
                PacketLen = data.readInt();
                System.err.println(PacketLen + "mmmmmmmmmmmmmmmm\n");
            }
            catch(Exception ex)
            {
                GlobalVar.WriteSysLog("Synsocket", "synRecvData", ex, 0);
                return -1;
            }
            if(PacketLen >= 1000 || PacketLen <= 0)
            {
                GlobalVar.WriteSysLog("Synsocket", "synRecvData", "packet len err", 0);
                return -1;
            }
            if(buffer.getBufferLen() >= PacketLen)
                break;
            try
            {
                len = in.read(buffer.getBuffer(), buffer.getBufferLen(), buffer.getBuffer().length - buffer.getBufferLen());
            }
            catch(InterruptedIOException ex)
            {
                GlobalVar.WriteSysLog("Synsocket", "synRecvData", ex, 0);
            }
            catch(Exception ex)
            {
                GlobalVar.WriteSysLog("Synsocket", "synRecvData", ex, 0);
                return -1;
            }
            if(len == -1 || len == 0)
            {
                GlobalVar.WriteSysLog("Synsocket", "synRecvData", "first read data len is -1", 0);
                return -1;
            }
            len += buffer.getBufferLen();
            buffer.setBufferLen(len);
        } while(len < PacketLen);
        return buffer.processBuffer(PacketLen) == 0 ? 0 : -1;
    }

    public int CloseSocket()
    {
        try
        {
            if(out != null)
                out.close();
            if(in != null)
            {
                in.close();
                in = null;
            }
            if(socket != null)
            {
                socket.close();
                socket = null;
            }
        }
        catch(Exception ex)
        {
            GlobalVar.WriteSysLog("Synsocket", "CloseSocket", ex, 0);
        }
        return 0;
    }

    public int LoginSGIP(int LoginType, ErrorCode err)
    {
        if(err == null)
        {
            GlobalVar.WriteSysLog("Synsocket", "LoginSGIP", "error code can't be null!", 0);
            return -1;
        }
        int ret = ConnectServer();
        if(ret != 0)
        {
            err.setErrorCodeString("\u8FDE\u63A5\u670D\u52A1\u5668\u5931\u8D25!");
            err.setErrorCodeValue(20);
            return -1;
        }
        String s = new String("60123" + GlobalVar.getSequenceNo());
        SGIP_Bind bind = new SGIP_Bind();
        bind.head.PacketLength = bind.Length();
        bind.head.RequestID = 1;
        bind.head.SequenceNumber = Integer.parseInt(s);
        bind.LoginType = LoginType;
        bind.LoginName = GlobalVar.getUsername().getBytes();
        bind.LoginPassword = GlobalVar.getPassword().getBytes();
        String xx = "";
        bind.Reserve = xx.getBytes();
        ret = bind.WriteProtocolData(out);
        System.err.print("eeee" + bind.head.PacketLength + "  " + bind.head.SequenceNumber + " " + LoginType + "  " + ByteUtility.bytesToStr(bind.LoginName) + "  " + ByteUtility.bytesToStr(bind.LoginPassword) + "  11" + ByteUtility.bytesToStr(bind.Reserve) + "11  " + out.size() + "\n");
        if(ret != 0)
        {
            err.setErrorCodeString("1\u53D1\u9001\u767B\u9646\u6D88\u606F\u5931\u8D25\uFF01");
            CloseSocket();
            return -1;
        }
        ret = FlushOutputData();
        if(ret != 0)
        {
            err.setErrorCodeString("2\u53D1\u9001\u767B\u9646\u6D88\u606F\u5931\u8D25\uFF01");
            CloseSocket();
            return -1;
        }
        DataBuffer buffer = new DataBuffer();
        System.err.print(buffer + "mmmmmnnnnnnnnnnnjjjjjjjjjjj\n");
        ret = setSoTimeout(10);
        if(ret != 0)
        {
            err.setErrorCodeString("\u8BBE\u7F6Etimeout\u5931\u8D25\uFF01");
            CloseSocket();
            return -1;
        }
        System.err.println(buffer.getBufferLen() + "\n");
        ret = synRecvData(buffer);
        if(ret != 0)
        {
            err.setErrorCodeString("\u63A5\u6536\u767B\u9646\u54CD\u5E94\u5931\u8D25!");
            CloseSocket();
            return -1;
        }
        SGIP_BindResp bind_resp = new SGIP_BindResp();
        ret = bind_resp.parseBuffer(buffer.getRecvBuffer());
        if(ret != 0)
        {
            err.setErrorCodeString("\u6536\u5230\u767B\u9646\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF\uFF01");
            CloseSocket();
            return -1;
        }
        System.out.print(bind_resp.getCommandID() + "mmmmm\n");
        if(bind_resp.getCommandID() != 0x80000001)
        {
            err.setErrorCodeString("\u6536\u5230\u7684\u6D88\u606F\u4E0D\u662Fbind_resp\uFF01");
            CloseSocket();
            return -1;
        }
        if(bind_resp.getResult() != 0)
        {
            err.setErrorCodeString("\u6536\u5230\u5931\u8D25\u7684\u767B\u9646\u54CD\u5E94\uFF0C\u72B6\u6001\u503C=" + Integer.toString(bind_resp.getResult()));
            CloseSocket();
        }
        return bind_resp.getResult();
    }

    private byte[] getAuthen(String TimeStamp)
    {
        MD5 md5 = new MD5();
        byte SevenBytes[] = new byte[7];
        for(int i = 0; i < 7; i++)
            SevenBytes[i] = 0;

        String md5in = GlobalVar.getUsername() + new String(SevenBytes) + GlobalVar.getPassword() + TimeStamp;
        return md5.calcMD5(md5in);
    }

    protected void finalize()
    {
        CloseSocket();
    }

    Socket socket;
    DataOutputStream out;
    DataInputStream in;
}

⌨️ 快捷键说明

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