📄 serverdemo.java
字号:
package cncgw.xsms;/** * <p>Title: 小灵通网关</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: yy</p> * @author lxf * @version 1.0 */import java.net.*;import java.io.*;import java.util.*;import cncgw.parser.ParseXml;import org.jdom.*;public class ServerDemo extends Thread{ private ServerSocket serverSocket ; private Socket socket = null; private static ServerDemo Instance = null; private int port = 8010; private static Object InstanceLock = new Object(); private BufferedReader inBReader; private OutputStream out; private BufferedReader in; private InputStream ins ; public Object lockObject=new Object(); public ServerDemo() { try { serverSocket = new ServerSocket(8010); System.out.println("模拟中心网关启动监听端口" + port + "."); start(); } catch(Exception ioe) { System.out.println("模拟中心网关错误启动监听端口" + port + ":" + ioe); } } public void run() { while(true) { try { System.out.println("开始 accept........." ); socket = serverSocket.accept(); String inputDataString="";// try// {// inBReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));// String strtemp=null;//// while( (strtemp=inBReader.readLine())!=null)// {// inputDataString = inputDataString + strtemp;//// }// }catch(Exception e)// {// System.out.println("[错误]-接收Socket信息时发生错误!"+e);// } inputDataString = SocketRead(); System.out.println("server接受到一个xml消息串长:"+inputDataString.length()); System.out.println("server接受到一个xml消息串:"+inputDataString); ParseXml.xmlConfig(removeBr(inputDataString)); System.out.println("---------------- header:------------"); int command_id = Integer.parseInt(ParseXml.getElement("command_id").trim()); System.out.println("get command_id ::"+command_id); int command_status = Integer.parseInt(ParseXml.getElement("command_status").trim()); System.out.println("get command_status ::"+command_status); int sequence_no = Integer.parseInt(ParseXml.getElement("sequence_no").trim()); System.out.println("get sequence_no ::"+sequence_no); switch(command_id) { case 1: System.out.println("this is a login request!"); String login_resp = getSendHeader(0x80000001,0,sequence_no)+getLoginRespBodyXML(); SocketSend(login_resp); System.out.println("login resp have send!"); break; case 4: System.out.println("this is a submit request!"); String submit_resp = getSendHeader(0x80000004,0,sequence_no)+getSubmitRespBodyXML(); SocketSend(submit_resp); System.out.println("submit resp have send!"); break; case 15: System.out.println("this is active request!"); String active_resp = getSendHeader(0x80000015,0,sequence_no); SocketSend(active_resp); System.out.println("active resp have send!"); break; case 2: System.out.println("this is logout request!"); String logout_resp = getSendHeader(0x80000002,0,sequence_no); SocketSend(logout_resp); System.out.println("logout resp have send!"); try { inBReader.close(); socket.close(); System.out.println("server 成功关闭连接!"); } catch(Exception eU) { System.out.println("server关闭Socket出错!"+eU.getMessage()); } break; case -2147483643: System.out.println("this is deliver response!!!"); break; default: System.out.println("---------Error packet-----------"); break; } } catch(Exception ioe) { System.out.println("启动port" + port + " error:" + ioe); } } } /** * 将/n处理掉<br> */ private String removeBr(String Content){ String makeContent = new String(); StringTokenizer strToken = new StringTokenizer(Content,"\n"); while(strToken.hasMoreTokens()) { makeContent = makeContent + strToken.nextToken(); } return makeContent; } public void SocketSend(String xmlStr) { try { out = socket.getOutputStream(); out.write(xmlStr.getBytes()); out.flush(); } catch(IOException esocket) { System.out.println("[出错]-向icp网关发送数据包出错!"+esocket); } } protected String getSendHeader(int command_id,int command_status,int sequence_no) { StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding = \"GBK\"?>"); sb.append("<xsmp>"); sb.append("<message_header>"); sb.append("<command_id>"+command_id+"</command_id>"); sb.append("<command_status>"+command_status+"</command_status>"); sb.append("<sequence_no>"+sequence_no+"</sequence_no>"); sb.append("</message_header>"); return sb.toString(); } public String getLoginRespBodyXML() { StringBuffer sb = new StringBuffer(); sb.append("<message_body>"); sb.append("<system_id>"+0+"</system_id>"); sb.append("</message_body>"); sb.append("</xsmp>"); return sb.toString(); } public String getSubmitRespBodyXML() { StringBuffer sb = new StringBuffer(); sb.append("<message_body>"); sb.append("<system_id>"+0+"</system_id>"); sb.append("</message_body>"); sb.append("</xsmp>"); return sb.toString(); } public static ServerDemo getInstance() { if(Instance==null) { synchronized(InstanceLock) { if(Instance==null) { Instance= new ServerDemo(); } } } return Instance; } public static void main(String[] args) { ServerDemo.getInstance(); } public String SocketRead() { try { ins = socket.getInputStream(); String readStr=""; String readLine=null;// byte[] xmlHeader = new byte[8];// ins.read(xmlHeader);// String xmlHeaderStr = new String(xmlHeader);// int xmlLength = Integer.parseInt(xmlHeaderStr.substring(4,8))-8;// byte[] xmlString = new byte[xmlLength]; byte[] xmlString = new byte[1024*4]; int readLength=ins.read(xmlString);// while((xmlLength-readLength)>0)// {// byte[] loseString = new byte[xmlLength-readLength];// int loseLength=ins.read(loseString);// for(int i=0;i<loseLength;i++)// xmlString[readLength+i] = loseString[i];// readLength=readLength+loseLength;//// } readStr =new String(xmlString); return readStr.trim(); } catch(Exception e ) { System.out.println("从Socket读取信息发生错误!"); } return ""; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -