📄 synsocket.java
字号:
/**
* <p>Title: smsproc</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author vienna
* @version 1.0
*/
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.text.*;
public class SynSocket {
Socket socket=null;
DataOutputStream out=null;
DataInputStream in=null;
static SimpleDateFormat f=new SimpleDateFormat("MMddHHmmss");
Date d=new Date();
public SynSocket() {
super();
}
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());
// System.out.print(out+"111111111111111111\n");
}
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());
System.out.print("in: "+in+"\n");
}
catch (Exception ex) {
GlobalVar.WriteSysLog("Synsocket","ConnectServer",ex,0);
return -1;
}
if ( in == null ){
GlobalVar.WriteSysLog("Synsocket","ConnectServer","in is null",0);
return -1;
}
return 0;
}
/*向短消息网关发送数据*/
public int FlushOutputData(){
try{
out.flush();
}
catch(Exception ex){
GlobalVar.WriteSysLog("Synsocket","FlushOutputData",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
return 0;
}
/*设置SOCKET读取数据超时setsotimeout*/
public int setSoTimeout(int seconds){
try{
socket.setSoTimeout(seconds * 1000);
}
catch(Exception ex){
GlobalVar.WriteSysLog("Synsocket","setsotimeout",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
return 0;
}
/*从短消息网关接收数据*/
public int synRecvData(DataBuffer buffer){
int len=0;
for(;;){
if(buffer.getBufferLen() < 4){
try{
System.out.print("synRecvData:"+buffer.getBufferLen()+"\n");
len = in.read(buffer.getBuffer(),buffer.getBufferLen(),buffer.getBuffer().length-buffer.getBufferLen());
System.out.print("eee"+len+"\n");
}
catch(java.io.InterruptedIOException ex){
GlobalVar.WriteSysLog("Synsocket","synRecvData",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
}
catch(Exception ex){
GlobalVar.WriteSysLog("Synsocket","synRecvData",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
if(len==-1||len==0){
GlobalVar.WriteSysLog("Synsocket","SynRecvData","first read data len is -1",GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
len=len+buffer.getBufferLen();
buffer.setBufferLen(len);
if(len<4){
continue;
}
}
int PacketLen=0;
DataInputStream data=new DataInputStream(new ByteArrayInputStream(buffer.getBuffer()));
// int PacketLen=0;
try{
PacketLen=data.readInt();
System.err.println(PacketLen+"mmmmmmmmmmmmmmmm\n");
}
catch(Exception ex){
GlobalVar.WriteSysLog("Synsocket","synRecvData",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
if(PacketLen >= 1000 || PacketLen <= 0){
GlobalVar.WriteSysLog("Synsocket","synRecvData","packet len err",GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
if(buffer.getBufferLen() < PacketLen){
try{
len=in.read(buffer.getBuffer(),buffer.getBufferLen(),buffer.getBuffer().length-buffer.getBufferLen());
}
catch(java.io.InterruptedIOException ex){
GlobalVar.WriteSysLog("Synsocket","synRecvData",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
}
catch(Exception ex){
GlobalVar.WriteSysLog("Synsocket","synRecvData",ex,GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
if(len==-1 || len==0){
GlobalVar.WriteSysLog("Synsocket","synRecvData","first read data len is -1",GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
len=len+buffer.getBufferLen();
buffer.setBufferLen(len);
if(len<PacketLen){
continue;
}
}
if(buffer.processBuffer(PacketLen)!=0){
return -1;
}
return 0;
}
}
/*关闭连接*/
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,GlobalVar.SYSTEM_BASE_ERROR_0);
}
return 0;
}
/*登陆短消息网关*/
public int LoginSGIP(int LoginType,ErrorCode err){
int ret;
if(err==null){
GlobalVar.WriteSysLog("Synsocket","LoginSGIP","error code can't be null!",GlobalVar.SYSTEM_BASE_ERROR_0);
return -1;
}
ret=ConnectServer();
if(ret!=0){
err.setErrorCodeString("连接服务器失败!");
err.setErrorCodeValue(20);
return -1;
}
String str=f.format(d);
String s=new String("3057190123"+str);
System.err.print(s+"\n");
byte b[]=s.getBytes();
int x=(d.getMonth()+1)*0x5f5e100+d.getDate()*0xf4240+d.getHours()+10000+d.getMinutes()*100+d.getSeconds();
System.err.println(Integer.toHexString(x)+" "+Integer.toHexString(x).length()+" "+x+" "+s.length()+"\n");
SGIP_Bind bind=new SGIP_Bind();
bind.head.PacketLength=bind.Length();
bind.head.RequestID=GlobalVar.ID_SGIP_BIND;
bind.head.Seq1=390123;
bind.head.Seq2=x;
bind.head.Seq3=GlobalVar.getSequenceNo();
bind.LoginType=(byte)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+" "+ GlobalVar.ID_SGIP_BIND+" "+LoginType+" "+ByteUtility.bytesToStr(bind.LoginName)+" "+ByteUtility.bytesToStr(bind.LoginPassword)+" "
+ByteUtility.bytesToStr(bind.Reserve)+" "+out.size()+"\n");
if(ret!=0){
err.setErrorCodeString("1发送登陆消息失败!");
CloseSocket();
return -1;
}
ret=FlushOutputData();
if(ret!=0){
err.setErrorCodeString("2发送登陆消息失败!");
CloseSocket();
return -1;
}
DataBuffer buffer=new DataBuffer();
System.err.print("dddv "+buffer.getBufferLen()+" mmmmmnnnnnnnnnnnjjjjjjjjjjj\n");
ret=setSoTimeout(50);
if(ret!=0){
err.setErrorCodeString("设置timeout失败!");
CloseSocket();
return -1;
}
ret=synRecvData(buffer);
if(ret!=0){
err.setErrorCodeString("接收登陆响应失败!");
CloseSocket();
return -1;
}
SGIP_BindResp bind_resp=new SGIP_BindResp();
ret=bind_resp.parseBuffer(buffer.getRecvBuffer());
if(ret!=0){
err.setErrorCodeString("收到登陆响应格式错误!");
CloseSocket();
return -1;
}
System.out.print(bind_resp.getCommandID()+"mmmmm\n");
if(bind_resp.getCommandID()!=GlobalVar.ID_SGIP_BIND_RESP){
err.setErrorCodeString("收到的消息不是bind_resp!");
CloseSocket();
return -1;
}
if(bind_resp.getResult()!=0){
err.setErrorCodeString("收到失败的登陆响应,状态值="+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]=0x00;
}
String md5in=GlobalVar.getUsername()+new String(SevenBytes)
+GlobalVar.getPassword()+TimeStamp;
return md5.calcMD5(md5in);
}
protected void finalize(){
CloseSocket();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -