📄 conncetionserveryx.java
字号:
package com.wayout.wayoutsp.operation.packageYX;
/**
* <p>Title: </p>
* <p>Description: 短信互动平台</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: wayoutcom</p>
* @author dufs@wayoutcom.com
* @version 1.0
*/
import java.util.*;
import java.io.*;
import java.net.*;
import com.wayout.wayoutsp.publics.*;
public class conncetionServerYX extends Thread {
public conncetionServerYX() {
}
/**
* 处理用户上行请求
* @param obj
*/
public void handleUserRequest(Object obj){
ReceiveDataBean receive = (ReceiveDataBean)obj;
try {
msgContent=null;
serviceType=null;
srcAddr = null;
destAddr=null;
linkid=null;
msgContent = receive.msgContent;
serviceType = receive.servieceType;
srcAddr = receive.srcAddr;
destAddr = receive.destAddr;
linkid= receive.linkId;
//
//////////////
Socket sc = getSocketConn();
if(sc !=null) {
myoutputstream = sc.getOutputStream();
myinputstream = sc.getInputStream();
ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream();
DataOutputStream dataOutStream = new DataOutputStream(byteArrayOutStream);
getDeliver(dataOutStream);
byte[] bb = byteArrayOutStream.toByteArray();
myoutputstream.write(bb);
myoutputstream.flush();
//关闭流
myoutputstream.close();
myinputstream.close();
sc.close();
}
PublicConstants.writeLog.info("send message to 134.159.120.43 ok!!");
PublicConstants.writeLog.info("destAddr=="+destAddr);
PublicConstants.writeLog.info("srcAddr=="+srcAddr);
PublicConstants.writeLog.info("serviceType=="+serviceType);
PublicConstants.writeLog.info("msgContent=="+msgContent);
PublicConstants.writeLog.info("linkid=="+linkid);
}
catch (Exception ex) {
//ex.printStackTrace();
PublicConstants.writeLog .error("public void handleUserRequest(Object obj)::: "+ex.toString() );
}
}
/**
* 主函数
*/
public void run() {
while (! myShutdownFlag) {
try{
while( handleVector.isEmpty() ){
synchronized ( _lock ){
try{
_lock.wait() ;
}catch (Exception e){}
}
}
if( handleVector.size()> 0 ){
handleUserRequest(handleVector.get(0));
handleVector.removeElementAt(0);
}
} catch (Exception ee) {
PublicConstants.writeLog .error("Cmpp handle error: "+ee.toString() );
}
} // end while
}
/**
*
* @param obj
* @return
*/
public boolean addBusi(Object obj) {
try {
handleVector.add(obj);
synchronized (_lock) {
_lock.notify();
}
return true;
}
catch (Exception e) {
System.out.println("HandleThread addBusi:" + e.toString());
return false;
}
}
/**
* 得到一个Socket连接
* @return
*/
private Socket getSocketConn() {
String HostIp = null;
int PortNum = 1122;
if (Clients != null) {
return Clients;
}
else {
try {
HostIp = clientIp;
try {
PortNum = serverPort;
}
catch (NumberFormatException e) {
PortNum = 1122;
System.out.println("服务端端口错误!");
}
if (HostIp == null || HostIp.trim().length() == 0) {
System.out.println("远端服务器IP地址参数没找到!");
return null;
}
Clients = new Socket(HostIp, PortNum);
return Clients;
}
catch (Exception e) {
System.out.println("连接远端通信服务器" + HostIp.toString() + "失败,原因是 " +
e.getClass());
return null;
}
}
}
/**
* 打包
* @param dataOutStream
* @return
*/
private boolean getDeliver(DataOutputStream dataOutStream) {
byte[] contentBytes;
try {
contentBytes=msgContent.getBytes("gb2312") ;
} catch(Exception e) {
contentBytes=msgContent.getBytes();
System.out.println("unsupportedEncoding Exception :"+e) ;
}
try {
/**
* test group send
*/
totalSize=2+2+4
+srcAddr.length()+1
// +dbname_glob.length()+1
+destAddr.length()+1
+linkid.length()+1
+contentBytes.length+1;
//System.out.println("totalSize===="+totalSize);
dataOutStream.writeShort(totalSize);
dataOutStream.writeShort(Cmpp_Deliver);
dataOutStream.writeInt(getSeqNo());
writeString(dataOutStream,srcAddr);
writeString(dataOutStream,destAddr);
writeString(dataOutStream,linkid);
dataOutStream.write(contentBytes);
dataOutStream.writeByte('\0');
//writeString(dataOutStream,msgContent);
} catch(Exception e) {
System.out.println("private boolean getSubmit(DataOutputStream dataOutStream):="+e.toString());
return false;
}
return true;
}
/**
* 写数据流
* @param dataOutStream
* @param str
* @return
*/
private static boolean writeString(DataOutputStream dataOutStream,String str) {
try {
dataOutStream.writeBytes(str) ;
dataOutStream.writeByte('\0');
} catch(IOException e) {
return false;
}
return true;
}
/**
* 写数据流
* @param outStream
* @param str
* @param StrLen
* @return
*/
private static boolean writeString(DataOutputStream outStream,String str,int StrLen){
int i;
try{
if(str!=null){
outStream.writeBytes(str) ;
for (i=1;i<=StrLen-str.length ();i++){
outStream.writeByte('\0');
}
}
else{
for (i=1;i<=StrLen;i++){
outStream.writeByte('\0');
}
}
}
catch(IOException e){
return false;
}
return true;
}
public static int fmo_number;
public synchronized static int getSeqNo(){
int temp_SeqNo=fmo_number++;
if (fmo_number>=2140000000)
fmo_number=1;
return temp_SeqNo;
}
private static Socket Clients;
private InputStream myinputstream;
private OutputStream myoutputstream;
public DataInputStream dataInStream;
public DataOutputStream dataOutStream;
static final int serverPort=1122; //服务端端口
static final String clientIp= "134.159.120.43"; //服务端端口
private ServerSocket mysvrsock; //本地服务socket
private boolean myShutdownFlag = false; //管理器关闭标志
public static Thread svrCmppThread; //服务线程
private Vector handleVector = new Vector(10000,100);
private Object _lock = new Object();
private String msgContent = null;
private int totalSize;
private String destAddr = null;
private String srcAddr = null;
private int registeredDelivery = 1;
private String serviceType = null;
private String linkid = null;
static final short Cmpp_Deliver= 0x0081; //下发请求
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -