JDK6.0学习笔记(十三)nio开发

    技术2022-05-12  10

    /** * nio开发 * 通过参数指定的主机端口发送一段请求报文,然后读取和打印报文 * 需要接受主机名和监听端口作为输入参数 * */import java.io.IOException;import java.net.UnknownHostException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.SocketChannel;import java.nio.charset.Charset;import java.nio.charset.CharsetDecoder;import java.nio.charset.CharsetEncoder;public class ReadURL {    public static void main(String args[]) {        String host = args[0];        int port = Integer.parseInt(args[1]);        SocketChannel channel = null;        try {            // Setup            InetSocketAddress socketAddress = new InetSocketAddress(host, port);            Charset charset = Charset.forName("UTF-8");            CharsetDecoder decoder = charset.newDecoder();            CharsetEncoder encoder = charset.newEncoder();            // Allocate buffers            ByteBuffer buffer = ByteBuffer.allocateDirect(1024);            CharBuffer charBuffer = CharBuffer.allocate(1024);            // Connect            channel = SocketChannel.open();            channel.connect(socketAddress);            // Send request            String request = "GET / /r/n/r/n";            channel.write(encoder.encode(CharBuffer.wrap(request)));            // Read response            while ((channel.read(buffer)) != -1) {                buffer.flip();                // Decode buffer                decoder.decode(buffer, charBuffer, false);                // Display                charBuffer.flip();                System.out.println(charBuffer);                buffer.clear();                charBuffer.clear();            }        } catch (UnknownHostException e) {            System.err.println(e);        } catch (IOException e) {            System.err.println(e);        } finally {            if (channel != null) {                try {                    channel.close();                } catch (IOException ignored) {                }            }        }    }}  

    最新回复(0)