⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usescattergather.java

📁 IBM JAVA NIO培训资料,有很好的实例
💻 JAVA
字号:
// $Id$import java.io.*;import java.net.*;import java.nio.*;import java.nio.channels.*;public class UseScatterGather{  static private final int firstHeaderLength = 2;  static private final int secondHeaderLength = 4;  static private final int bodyLength = 6;  static public void main( String args[] ) throws Exception {    if (args.length!=1) {      System.err.println( "Usage: java UseScatterGather port" );      System.exit( 1 );    }    int port = Integer.parseInt( args[0] );    ServerSocketChannel ssc = ServerSocketChannel.open();    InetSocketAddress address = new InetSocketAddress( port );    ssc.socket().bind( address );    int messageLength =      firstHeaderLength + secondHeaderLength + bodyLength;    ByteBuffer buffers[] = new ByteBuffer[3];    buffers[0] = ByteBuffer.allocate( firstHeaderLength );    buffers[1] = ByteBuffer.allocate( secondHeaderLength );    buffers[2] = ByteBuffer.allocate( bodyLength );    SocketChannel sc = ssc.accept();    while (true) {      // Scatter-read into buffers      int bytesRead = 0;      while (bytesRead < messageLength) {        long r = sc.read( buffers );        bytesRead += r;        System.out.println( "r "+r );        for (int i=0; i<buffers.length; ++i) {          ByteBuffer bb = buffers[i];          System.out.println( "b "+i+" "+bb.position()+" "+bb.limit() );        }      }      // Process message here      // Flip buffers      for (int i=0; i<buffers.length; ++i) {        ByteBuffer bb = buffers[i];        bb.flip();      }      // Scatter-write back out      long bytesWritten = 0;      while (bytesWritten<messageLength) {        long r = sc.write( buffers );        bytesWritten += r;      }      // Clear buffers      for (int i=0; i<buffers.length; ++i) {        ByteBuffer bb = buffers[i];        bb.clear();      }      System.out.println( bytesRead+" "+bytesWritten+" "+messageLength );    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -