📄 synsocket.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 + -