Netty怎么接收分批发来的一笔数据? 在netty的public void messageReceived(ChannelHandlerContext ctx, MessageEvent e){}方法中,怎么接收服务器分多次发来的一笔完成的数据,由于数据量大,所以只能多次发送。在messageReceived中怎么把这条完整的消息拼接起来? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个没有直接的办法,只能先把每个数据分组写到磁盘缓存起来,等所有数据分组都传输完毕了,再将磁盘中的缓存数据拼接起来,组成完整的数据。这就要求发送的每个分组数据中,带有分组信息,比如分组ID,分组序号,分组总个数,分组数据量等。接收方根据这些信息,可以将分组信息还原成完整的数据。一般的接收过程,只是单纯的接收数据。要想接收分组数据,就需要更改接收程序的过程:1. 传输分组数据,持久化分组数据;2. 从分组数据中提取分组信息,记录分组信息;3. 写一个线程安全的方法,并调用该方法, 该方法的功能是,判断当前传输完毕的分组数据,是否是最后一个分组数据;4. 根据步骤3的结果做处理,如果最后一个分组数据已经传完, 那么,根据所有记录下来的分组信息,重新组装分组数据,还原成完整的数据。 不知道LZ所说的“数据量大”具体是多大。楼上的方法不错,只是不是很大的话就不需要用磁盘缓存了 初学者请教大侠们一个小程序。 关于javax.swing.text.html.HTMLEditorKit.ParserCallBack 里方法用法 50分求网址的正则表达式 StringBuffer()的用法!! 打包jar文件运行找不到。properties文件 关于 URL 通信的简单问题,请你侃侃 求一简单java游戏TicTacToe制作思路,急! 大哥你们来帮忙呀-------ping IP area 请问java application怎样把信息直接输出到打印机呢? 请问如何打开模态窗口? 求大神指导,为什么会抛数组下标越界异常。 JVM为我做了什么
这就要求发送的每个分组数据中,带有分组信息,比如分组ID,分组序号,分组总个数,分组数据量等。
接收方根据这些信息,可以将分组信息还原成完整的数据。一般的接收过程,只是单纯的接收数据。要想接收分组数据,就需要更改接收程序的过程:
1. 传输分组数据,持久化分组数据;
2. 从分组数据中提取分组信息,记录分组信息;
3. 写一个线程安全的方法,并调用该方法,
该方法的功能是,判断当前传输完毕的分组数据,是否是最后一个分组数据;
4. 根据步骤3的结果做处理,如果最后一个分组数据已经传完,
那么,根据所有记录下来的分组信息,重新组装分组数据,还原成完整的数据。
楼上的方法不错,只是不是很大的话就不需要用磁盘缓存了