1.xsocket是一个轻量级的基于NIO的服务器框架,用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理,异步读写等方面的操作。
定义一个借口,继承IDataHandler,IConnectExceptionHandler, IConnectHandler, IDisconnectHandler:
public interface SocketDataHander extends IDataHandler, IConnectExceptionHandler, IConnectHandler, IDisconnectHandler{}
写出这个接口的实现方法:
1 public class SocketUnionPay implements SocketDataHander{ 2 3 4 @Override 5 public boolean onData(INonBlockingConnection connection) throws IOException, 6 BufferUnderflowException, ClosedChannelException, 7 MaxReadSizeExceededException { 8 // TODO Auto-generated method stub 9 start = System.currentTimeMillis();//获取当前时间10 byte[] data = connection.readBytesByLength(connection.available()); //监控接收到的数据11 12 //接收数据,转换为输出流,并且输出13 receiveBufByte = new Iso8583_Send_OutputStream(null);14 receiveBufByte.write(data, 0, data.length);15 System.out.println("##############################长度:"+data.length);16 17 if(receiveBufByte.length() > 9){18 LOG.info("接收数据:" + new String(receiveBufByte.getBufbyte()) + " 长度:" + receiveBufByte.length());19 20 byte[] sendata = unionPay_processingCentre.sendTreatmentTrade(receiveBufByte.getBufbyte()); //处理发送并返回21 byte[] rendata = unionPay_processingCentre.respTreatmentTrade(sendata);//数据返回处理22 LOG.info("返回数据:" + new String(rendata));23 connection.write(rendata);24 }25 26 end = System.currentTimeMillis();27 if(LOG.isTraceEnabled()){28 LOG.trace("########################前置处理耗时:"+(end-start)+"#######################");29 }30 return true;31 }32 33 @Override34 public boolean onConnectException(INonBlockingConnection connection,35 IOException e) throws IOException {36 // TODO Auto-generated method stub37 LOG.error("转发Bank连接异常..onConnectException...");38 return true;39 }40 41 @Override42 public boolean onConnect(INonBlockingConnection connection) throws IOException,43 BufferUnderflowException, MaxReadSizeExceededException {44 // TODO Auto-generated method stub45 LOG.info("Scoket前置打开连接..onConnect...");46 return true;47 }48 49 @Override50 public boolean onDisconnect(INonBlockingConnection connection) throws IOException {51 // TODO Auto-generated method stub52 LOG.info("Scoket前置关闭连接..onDisconnect...");53 connection.close();54 return true;55 }56 57 }