- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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通过内部的读缓冲区缓冲接收
您可能关注的文档
- PROE保存为sat格式后用CAD打开方法.pdf
- POWER产品开案申请书.pdf
- powermill程序单变量参数.pdf
- Proe50之成型命令详解.pdf
- PSpice子电路模型的创建.pdf
- P区元素实验习题.pdf
- qq音速游戏名字.pdf
- PXICAN来监 测波音787航空电 子设备的控制面板.pdf
- RTK(1+1)简单操作说明.pdf
- rp6罗马全面战争修改大全.pdf
- 基本面选股组合月报:大模型AI选股组合本年超额收益达6.60.pdf
- 可转债打新系列:安集转债,高端半导体材料供应商.pdf
- 可转债打新系列:伟测转债,国内头部第三方IC测试企业.pdf
- 联想集团PC换机周期下的价值重估.pdf
- 计算机行业跟踪:关税升级,国产突围.pdf
- 科技类指数基金专题研究报告:详解AI产业链指数及基金布局.pdf
- 计算机行业研究:AIAgent产品持续发布,关税对板块业绩影响较小.pdf
- 民士达深度报告:国内芳纶纸龙头,把握变局期崛起机遇.pdf
- 社会服务行业动态:全球首张民用无人驾驶载人航空器运营合格证落地,霸王茶姬冲击美股IPO.pdf
- 通信行业研究:特朗普关税令落地,长期看好国产算力链.pdf
文档评论(0)