Xsocket学习
1.xsocket是一个轻量级的基于NIO的服务器框架,用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理,异步读写等方面的操作。
定义一个借口,继承IDataHandler,IConnectExceptionHandler, IConnectHandler, IDisconnectHandler:
public interface SocketDataHander extends IDataHandler,
IConnectExceptionHandler, IConnectHandler, IDisconnectHandler{ }
写出这个接口的实现方法:
public class SocketUnionPay implements SocketDataHander{
@Override
public boolean onData(INonBlockingConnection connection) throws IOException,
BufferUnderflowException, ClosedChannelException,
MaxReadSizeExceededException {
// TODO Auto-generated method stub
start = System.currentTimeMillis();//获取当前时间
byte[] data = connection.readBytesByLength(connection.available()); //监控接收到的数据
//接收数据,转换为输出流,并且输出
receiveBufByte = new Iso8583_Send_OutputStream(null);
receiveBufByte.write(data, 0, data.length);
System.out.println("##############################长度:"+data.length);
if(receiveBufByte.length() > 9){
LOG.info("接收数据:" + new String(receiveBufByte.getBufbyte()) + " 长度:" + receiveBufByte.length());
byte[] sendata = unionPay_processingCentre.sendTreatmentTrade(receiveBufByte.getBufbyte()); //处理发送并返回
byte[] rendata = unionPay_processingCentre.respTreatmentTrade(sendata);//数据返回处理
LOG.info("返回数据:" + new String(rendata));
connection.write(rendata);
}
end = System.currentTimeMillis();
if(LOG.isTraceEnabled()){
LOG.trace("########################前置处理耗时:"+(end-start)+"#######################");
}
return true;
}
@Override
public boolean onConnectException(INonBlockingConnection connection,
IOException e) throws IOException {
// TODO Auto-generated method stub
LOG.error("转发Bank连接异常..onConnectException...");
return true;
}
@Override
public boolean onConnect(INonBlockingConnection connection) throws IOException,
BufferUnderflowException, MaxReadSizeExceededException {
// TODO Auto-generated method stub
LOG.info("Scoket前置打开连接..onConnect...");
return true;
}
@Override
public boolean onDisconnect(INonBlockingConnection connection) throws IOException {
// TODO Auto-generated method stub
LOG.info("Scoket前置关闭连接..onDisconnect...");
connection.close();
return true;
}
}
Xsocket学习的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- Python编程规范及性能优化(转载)
转载地址:http://codeweblog.com/python编程规范及性能优化/
- Linux查看用户和组命令
在Linux系统里,我们会经常用Linux查看用户的命令,在这里我们一些命令进行了总结,总共有7个,并做了详细的解释,以便让大家更深入的理解,接下来让我们一起来看看这些命令和具体应用. 一.Linux ...
- POj 2186 Popular Cows[连通分量]
题目大意:给出N头牛,有M种关系u, v.代表u牛崇拜v牛.要求找出有多少头牛被所有牛崇拜着题目链接:http://poj.org/problem?id=2186解题思路:1>求出强连通分量,标 ...
- Bengio最新博文:深度学习展望
Bengio最新博文:深度学习展望 人类一直梦想着创造有智能的机器.早在第一台可编程计算机问世前100多年,发明家就对如何能让由连杆和齿轮组成的设备也变得更加智能这一命题充满好奇.后来,20世纪40年 ...
- android fragment嵌套fragment出现的问题:no activity
package com.example.fragmentNavigation2.fragment; import android.content.Context; import android.os. ...
- Motion on Ubuntu
Motion is a program that monitors the video signal from one or more cameras and is able to detect if ...
- [unity菜鸟] controller.SimpleMove(transform .forward); 无法移动
今天做demo时遇到一个问题:当使用角色控制器操作物体,用 controller.SimpleMove(transform .forward); 语句时物体不能移动,搜索请教了很久,最后终于googl ...
- 145. Binary Tree Postorder Traversal
题目: Given a binary tree, return the postorder traversal of its nodes' values. For example:Given bina ...
- 【转】Android source build/envsetup.sh学习笔记
原文网址:http://blog.csdn.net/mliubing2532/article/details/7567164 如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很 ...
- MySQL问题集绵
1.MYSQL can't create table(errno:150) 详细:[Err] 1005 - Can't create table '.\ejforum\ejf_attach.frm' ...