网站大量收购独家精品文档,联系QQ:2885784924

xsocket使用指南【官方文档翻译】.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

核心功能

支持面向流通信主要抽象是Connection接口。通过IBlockingConnection或者

INonblockingConnection对象进行数据的读写。在record或者bulk状态中,

Connection对象提供了对于特定数据类型的几个方便方法。

Connection实现了java.nio包中的GatheringByteChannel和

WritableByteChannel接口,如果InputStream或者OutputStream对象被需要,可

以使用java.nio.Channels.newInputStream(readableChannel)和

java.nio.Channels.newOutputStream(writeableChannel)包装channel对象,因为

经典的流只有在IBlockingConnection映射到经典的InputStream中时才有阻塞行

为。

提供的其他类型方法主要是控制连接行为和获取连接信息的方法。比如,远

程链接点信息可以获取到,连接的数据冲刷行为可以被控制。这些方法都不是线

程安全的。

与IBlockingConnection不同的是,INonBlockingConnection在调用read方法

直接返回。将IDataHandler对象赋给INonBlockingConnection对象可以使其在新

数据到来时被通知。当对应的事件发生时,IDataHandler对象的回调函数会被调

用。除了IDataHandler也存在IConnectionHandler对象。

服务器端在INonblockingConnection接口上处理接入连接。

1、示例:简单TCP服务器

首先定义实现了需要的接口(比如,IDataHandler,IConnectHandler,

IIdleTimeoutHandler或者IConnectionTimeoutHandler),这个DataHandler会在从

连接上接收到数据时被调用。

classEchoHandlerimplementsIDataHandler{

publicbooleanonData(INonBlockingConnectionnbc)

throwsIOException,

BufferUnderflowException,

MaxReadSizeExceededException{

Stringdata=nbc.readStringByDelimiter(\r\n);

nbc.write(data+\r\n);

returntrue;

}

}

然后创建一个服务器实例,并将上面的DataHandler赋给它

//createstheserverbypassingovertheportnumberhandler

IServersrv=newServer(8090,newEchoHandler());

//runitwithinthecurrentthread.

srv.run();//thecallwillnotreturn

//...orstartitbyusingadedicatedthread专用线程

srv.start();//returnsaftertheserverhasbeenstarted

与run方法对应的,服务器的start方法创建一个专用的线程来运行服务器。

start方法在内部阻塞知道服务器启动,为了确保服务器在执行其他进一步操作前

被启动,这是比较好的方法。

执行服务器的close方法来优雅的关闭服务器。就像其他面向连接的框架,

服务器实现了java.io.Closable接口

2、DataHandler的onData方法的语义分析

IDataHandler的onData方法会在数据分片被接收后直接调用。要注意的是,

在网络层,数据可以被分解成若干个TCP片段也可能被组合打包成一个TCP报

文。在客户端执行类似于connection.write(“hello”)的写操作,并不意味着一个TCP

报文到达服务器端。xSocket通过内部的读缓冲区缓冲接收

文档评论(0)

欢乐峡谷 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档