Topic: 用 NIO 在两台 PC 间传送文件的问题 |
Print this page |
1.用 NIO 在两台 PC 间传送文件的问题 | Copy to clipboard |
Posted by: ant21 Posted on: 2005-05-08 21:48 如果在文件发送方将文件一次性映射到内存(还是应该切分为更小的块?),然后用 SocketChannel 发送,像这样:
这时候如何才能知道接收方的接收进度呢?因为如果没有特殊情况发生的话,send 的值只是 buff 的大小。如果想要用一个进度条在发送方显示文件传送进度的话,进度值(也就是接收方实际接收到的字节数)该怎么样获得呢?难道需要每次向接收方查询? 谢谢! |
2.Re:用 NIO 在两台 PC 间传送文件的问题 [Re: ant21] | Copy to clipboard |
Posted by: henryevol Posted on: 2005-06-04 16:05 对于阻塞式的Channel连接, socketChannel.write(buff); 直到写完了,才会返回 而对于非阻塞式的连接 可能写完了返回,也可以写了一点之后就有返回 返回值为 已发送的数值 下面函数是对非阻塞通道进行的阻塞式调用! 可以参考 public static void channelWrite(SocketChannel channel, ByteBuffer writeBuffer, long sleepInterval) throws IOException { long nbytes = 0; long toWrite = writeBuffer.remaining(); try { while (nbytes != toWrite) { nbytes += channel.write(writeBuffer); try { Thread.sleep(sleepInterval); } catch (InterruptedException e) {} } } finally { writeBuffer.rewind(); } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |