在使用NIO进行写入数据时,我把缓冲区增大1000k,为什么这时会出现没有写完的情况??
public class Server { public static void main(String[] args) throws Exception { ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.configureBlocking(false); serverSocketChannel.bind(new InetSocketAddress("localhost", 7077)); Selector selector = Selector.open(); serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT); selector.select(); Set<SelectionKey> selectedKeysSet = selector.selectedKeys(); Iterator<SelectionKey> iterator = selectedKeysSet.iterator(); while (iterator.hasNext()) { SelectionKey key = iterator.next(); SocketChannel socketChannel = ((ServerSocketChannel) key.channel()).accept(); socketChannel.configureBlocking(false); ByteBuffer byteBuffer = ByteBuffer.allocate(1000 * 1024); System.out.println("byteBuffer.limit()=" + byteBuffer.limit()); socketChannel.write(byteBuffer); System.out.println("byteBuffer.position()=" + byteBuffer.position()); socketChannel.close(); } serverSocketChannel.close(); } }
public class Client { public static void main(String[] args) throws Exception { SocketChannel channel1 = SocketChannel.open(); channel1.connect(new InetSocketAddress("localhost", 7077)); TimeUnit.MINUTES.sleep(1); channel1.close(); } }
byteBuffer.limit()=1024000byteBuffer.position()=261676
烙印99
相关分类