测试代码 public class ServerSTCP { static int SERVER_PORT = 3456; static int US_STREAM = 0; static int FR_STREAM = 1; static SimpleDateFormat USformatter = new SimpleDateFormat("h:mm:ss a EEE d MMM yy, zzzz", Locale.US); static SimpleDateFormat FRfo…
jdk1.7支持sctp协议,需要linux安装sctp支持库 测试代码 public class ServerSCTP { static int SERVER_PORT = 3456; static int US_STREAM = 0; static int FR_STREAM = 1; static SimpleDateFormat USformatter = new SimpleDateFormat("h:mm:ss a EEE d MMM yy, zzzz", Locale.U…
OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型. 该体系结构标准定义了网络互连的七层框架(物理层.数据链路层.网络层.传输层.会话层.表示层和应用层),即ISO开放系统互连参考模型. OSI网络体系结构各层协议: (1)应用层:TELNET.FTP.TFTP.SMTP.SNMP.HTTP.BOOTP.DHCP.DNS(2)表示层:                        …
RMI(即Remote Method Invoke 远程方法调用) 远程对象: 用于远程客户端调用 必需继承java.rmi.Remote,每个调用方法必须添加java.rmi.RemoteException异常 远程对象实现:用于远程服务器,实现调用逻辑 必需继承UnicastRemoteObject 远程服务器:通过LocateRegistry注册服务 远程客户端:通过LocateRegistry查找服务,调用方法即可发送内容 Naming是LocateRegistry的辅助工具类 impo…
eventLoop从命名上看是专门处理事件 事件系统主要由线程池同队列技术组成,有以下几个优点 1.任务出队有序执行,不会出现错乱,当然前提执行线程池只有一个 2.解偶系统复杂度,这是个经典的生产者/消费者模型,生产者只需要生成执行上下文需要的数据,消费者集中实现处理逻辑,无需要关注太多关系层次问题 3.可根据业务按单一类型事件独立分配一套event system ,提高并行处理而又解决一些并行产生的并发问题 那作为一个消息框架,处理的事件有那些呢? 主要分为系统事件同用户事件 如消息编解码.s…
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架,使用的是RMI技术. 比较经典的应用jdk bin目录下 jconsole,jvisualvm 来看下如何使用jconsole简单使用 打开jconsole 菜单->新建连接 打开相应的应用程序,我们拿ServerRMI 接着测试. 选择线程选项RMI应用一共占了11个线程,每次运行线程数不是固定,接着运行ClientRMI 当运行client超过初始化线程数时,每…
理论部分 一个long占8byte,大多数应用业数值不超过int每次传输多4byte会很浪费 有没有什么办法可以压缩long或int呢? 答案是有的,原理好简单,如果数值不超过int.max_value的话就"自动变成"int类型 现在问题又出现了读取时如果知道原来的类型是什么? 可以先写一个byte是什么类型,再写入值,读时先读一个byte,根据类型做不同解释 源码解读 public abstract class PacketUtil { public final static by…
既然跟网络内容有关就不得不学习网络IO模型,时代在进步,技术也在进步,采取使用那种网络IO模型就已经确定应用程序规模 阻塞IO(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 图1 阻塞IO 大部分的IO接口都是阻塞型的.所谓阻塞型接口是指系统调用(一般是IO接口)不返回调用结果并让当前线程一直阻塞,只有当该系统调用获得结果或者超时出错时才返回. 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的…
Unsafe 是channel的内部接口,从书写跟命名上看是不公开给开发者使用的,直到最后实现NioSocketChannelUnsafe也没有公开出去 public interface Channel extends AttributeMap, ChannelOutboundInvoker, Comparable<Channel> { interface Unsafe { RecvByteBufAllocator.Handle recvBufAllocHandle(); SocketAddr…
根据设计生成两个接口,IRpcSend send方法返回数据要求包装成QResult对象 public interface IRpcSend { public <T> QResult<T> send(byte command, Object... args); } public interface IRpcReceive { public <T> T receive(byte command, Objec[] args); } public interface IRpc…